.NET 4.0 - AccessViolationException und WndProc

8

Ich habe dieses Code-Snippet:

%Vor%

Wenn ich mein Programm starte, erhalte ich einen AccessViolationException Fehler in der Zeile base.WndProc(ref m); und ich weiß nicht warum.

Offenbar wurde dies von .NET 2.0 auf 4.0 portiert und meine Theorie ist, dass es jetzt eine alternative Methode gibt, die anstelle von WndProc verwendet wird. Ist das der Fall? Wenn nicht, warum bekomme ich diese Ausnahme?

    
Kyle V. 17.08.2012, 17:22
quelle

3 Antworten

7

Ich habe es behoben, indem ich dieses Attribut über die Methode hinzugefügt habe:

%Vor%

Dann um die Zeile herum, wo die Ausnahme auftritt, mit einem try / catch. Ich fand diese Informationen hier .

    
Kyle V. 20.08.2012, 19:39
quelle
1

Die Dokumentation für WndProc zeigt eine anspruchsvolle vollständige Vertrauenswürdigkeit. Hast du das probiert? z.B.:

%Vor%     
Peter Ritchie 20.08.2012 17:25
quelle
0

Ich vermute, dass in Ihrem Code etwas Größeres passiert. Basierend auf Ihrem Snippet würde ich versuchen:

  1. Kommentieren Sie die WndProc-Überschreibung, macht das noch Repro durch Absturz woanders?
  2. Veranlassen Sie, dass WndProc nur "base.WndProc (ref msg)" aufruft. Erhalten Sie immer noch den gleichen Fehler? Was ist der Callstack? Gibt es noch mehr Code in deinem Stack?
  3. Mit dem Snippet, wie es ist, passiert das nur, wenn WM_LBUTTONDOWN? Wenn diese Exception ausgelöst wird, was ist mit diesem Deactivate-Handler verknüpft?

Wenn dies nicht praktisch ist, müssen Sie das Snippet wahrscheinlich aktualisieren, um besser zu erklären, was Sie tun möchten.

    
Joe Castro 20.08.2012 18:04
quelle