जो मैं करने की कोशिश कर रहा हूं वह है कि नियंत्रण (एक ही प्रक्रिया में, लेकिन जिसका मेरा कोई नियंत्रण नहीं है) खुद को फिर से निकालने के लिए, और मेरे कोड को तब तक अवरुद्ध करने के लिए को फिर से तैयार करना समाप्त हो गया।विंडो को रेड्रो सिंक्रनाइज़ करें (ब्लॉकिंग विधि के साथ)
मैंने UpdateWindow
का उपयोग करने का प्रयास किया लेकिन ऐसा लगता है कि रीडाव खत्म होने की प्रतीक्षा नहीं है।
कारण मुझे इसे फिर से खत्म करने के लिए प्रतीक्षा करने की आवश्यकता है कि मैं बाद में स्क्रीन को पकड़ना चाहता हूं।
नियंत्रण डॉटनेट नियंत्रण नहीं है, यह एक नियमित विंडोज नियंत्रण है।
मैंने पुष्टि की है कि:
- संभाल सही है।
UpdateWindow
सत्य लौटाता है।- यह सुनिश्चित करने के लिए कि विंडो को अमान्य करने की आवश्यकता है,
UpdateWindow
पर कॉल करने से पहलेInvalidateRect(hWnd, IntPtr.Zero, true)
को भेजने से पहले। - नियंत्रण की मूल विंडो पर एक ही चीज़ करने का प्रयास किया।
इस्तेमाल किया कोड:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool InvalidateRect(IntPtr hWnd, IntPtr rect, bool bErase);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UpdateWindow(IntPtr hWnd);
public bool PaintWindow(IntPtr hWnd)
{
InvalidateRect(hWnd, IntPtr.Zero, true);
return UpdateWindow(hWnd);
}
//returns true
शायद तुम WM_PAINT मामले में प्रतिपादन निष्क्रिय कर सकते हैं और फिर उसके बाद कि पुनः सक्षम करें। –
@ एसए। पार्किड क्या आप कृपया विस्तृत कर सकते हैं? – Rotem
हम्म .. आपको क्यों लगता है कि _UpdateWindow Redraw को खत्म करने के लिए प्रतीक्षा नहीं कर रहा है? –