मैं इस कोड का टुकड़ा है:.NET 4.0 AccessViolationException और WndProc
internal class MTool : NativeWindow
{
private const int WM_LBUTTONDOWN = 0x0201;
public event TipDeactivateEventHandler Deactivate;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if(m.Msg == WM_LBUTTONDOWN)
{
if(this.Deactivate != null)
{
this.Deactivate();
}
}
base.WndProc(ref m);
}
}
जब मैं अपने कार्यक्रम चलाने मैं लाइन base.WndProc(ref m);
में एक AccessViolationException त्रुटि मिलती है और मैं पता नहीं क्यों।
स्पष्ट रूप से यह .NET 2.0 से 4.0 तक पोर्ट किया गया था और मेरा सिद्धांत यह है कि WNDProc को ओवरराइड करने के स्थान पर अब एक वैकल्पिक विधि हो सकती है। क्या यह मामला है? यदि नहीं, तो मुझे यह अपवाद क्यों मिल रहा है?
क्या आप नमूना का थोड़ा और पूरा पूरा कर सकते हैं? कम से कम दिखा रहा है कि आप MTool विंडो कैसे बना रहे हैं और इसे प्रदर्शित कर रहे हैं? मैं यह सुनिश्चित करना चाहता हूं कि मेरा रेपो आपके नजदीक है। – Tim
तो क्या आप वास्तव में कोई वस्तु नहीं बना रहे हैं, बस वस्तु बना रहे हैं? क्या आपको CreateHandle को कॉल करने की आवश्यकता नहीं है या नेटिवविंडो के लिए ऐसा कुछ उपयोगी होना चाहिए? – Tim
क्या आपने आधार पर ब्रेकपॉइंट डालने का प्रयास किया है। डंडप्रोक और अपवाद उठाए जाने पर एम का मूल्य क्या है ... यह कभी भी कुछ मीटर के लिए काम करता है या इसे पहली बार अपवाद फेंक देता है .. –