AccessViolationException beim beenden der App

Hallo .!

Ich verwende .NET Framework 2.0 mit C# und L&L 14 mit dem aktuellsten ServicePack (vom 15.01.2009).
Von dem Beispiel ‘C# Druck über eigene Druckschleife’ habe ich mir den Code geschnappt und leicht angepasst für mein Projekt.
Wenn ich nun mein Projekt starte, einen Ausdruck auf die Vorschau tätige, und dann meine Anwendung wieder schließe, erhalte ich folgende Exception “Eine nicht behandelte Ausnahme des Typs ‘System.AccessViolationException’ ist in Systme.Windows.Forms.dll aufgetreten”.

Diese Meldung muss wohl von L&L kommen, da das Projekt ganz normal funktioniert wenn ich den L&L code entferne. Gleiches Phänomen ist übrigens in einem anderen Projekt, dort erhalte ich ebenfalls diese Meldung. Wenn ich dann auch dort das L&L Zeugs rausnehme funktioniert alles einwandfrei.

Dies ist der StackTrace der Exception beim beenden der Anwendung:

" bei System.Windows.Forms.UnsafeNativeMethods.IntDestroyWindow(HandleRef hWnd)\r\n bei System.Windows.Forms.UnsafeNativeMethods.DestroyWindow(HandleRef hWnd)\r\n bei System.Windows.Forms.NativeWindow.DestroyHandle()\r\n bei System.Windows.Forms.Control.DestroyHandle()\r\n bei System.Windows.Forms.Control.Dispose(Boolean disposing)\r\n bei System.Windows.Forms.Form.Dispose(Boolean disposing)\r\n bei DevExpress.XtraEditors.XtraForm.Dispose(Boolean disposing)\r\n bei Tuev.eDocX_dotNET1.frmMain.Dispose(Boolean disposing) in D:\C#_Entwicklungen\Framework 2.0\PROJECTS\eDocX dotNET1\eDocX dotNET1\frmMain.Designer.cs:Zeile 20.\r\n bei System.ComponentModel.Component.Dispose()\r\n bei System.Windows.Forms.Form.WmClose(Message& m)\r\n bei System.Windows.Forms.Form.WndProc(Message& m)\r\n bei DevExpress.XtraEditors.XtraForm.WndProc(Message& msg)\r\n bei DevExpress.XtraBars.Ribbon.RibbonForm.WndProc(Message& msg)\r\n bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)\r\n bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)\r\n bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)\r\n bei

Hat jemand eine Idee was sein könnte?
Was mir aufgefallen ist: Die .ll Datei wird wohl nicht gelöscht nach diesen Aufrufen:

if(String.Compare(strTargetFormat, “PRV”) == 0)
{
m_ll.Core.LlPreviewDisplay(strTemplateFile, String.Empty, Handle);
m_ll.Core.LlPreviewDeleteFiles(strTemplateFile, String.Empty);
}

Wenn die .ll nicht gelöscht ist und die Anwendung geschlossen wird kommt wohl die Access Violation.
Wir können so natürlich keine Anwendung ausgeben wenn der Fehler nicht behoben ist…

Danke
Gruß

Tom

Hallo Thomas,

schreib mal diesen Code in die Dispose-Methode des Formulars, in dass Du den
LL-Viewer eingebunden hast:

if ((lL_viewer != null) && (!lL_viewer.IsDisposed))
{
try
{
lL_viewer.Dispose();
lL_viewer = null;
}
catch { }
}

Damit sollte der Fehler nicht mehr auftreten.

Gruß
Carsten

Hi Tom,

On Thu, 26 Feb 09 14:14:47 +0100, “Thomas Klocker”
<thomas.klocker@tuev-su…> wrote:

Ich verwende .NET Framework 2.0 mit C# und L&L 14 mit dem aktuellsten ServicePack (vom 15.01.2009).
Von dem Beispiel ‘C# Druck über eigene Druckschleife’ habe ich mir den Code geschnappt und leicht angepasst für mein Projekt.
Wenn ich nun mein Projekt starte, einen Ausdruck auf die Vorschau tätige, und dann meine Anwendung wieder schließe, erhalte ich folgende Exception “Eine nicht behandelte Ausnahme des Typs ‘System.AccessViolationException’ ist in Systme.Windows.Forms.dll aufgetreten”.

Diese Meldung muss wohl von L&L kommen, da das Projekt ganz normal funktioniert wenn ich den L&L code entferne. Gleiches Phänomen ist übrigens in einem anderen Projekt, dort erhalte ich ebenfalls diese Meldung. Wenn ich dann auch dort das L&L Zeugs rausnehme funktioniert alles einwandfrei.

Was mir aufgefallen ist: Die .ll Datei wird wohl nicht gelöscht nach diesen Aufrufen:

if(String.Compare(strTargetFormat, “PRV”) == 0)
{
m_ll.Core.LlPreviewDisplay(strTemplateFile, String.Empty, Handle);
m_ll.Core.LlPreviewDeleteFiles(strTemplateFile, String.Empty);
}

Wenn die .ll nicht gelöscht ist und die Anwendung geschlossen wird kommt wohl die Access Violation.
Wir können so natürlich keine Anwendung ausgeben wenn der Fehler nicht behoben ist…

Ich kenne das Problem und hab’ das auch schon vor Wochen gepostet.
Interessanterweise haben der Patch vom 15.01. und das explizite
Zerstören aller LL Objekte innerhalb der Klasse in der Dispose Methode
das Problem verschwinden lassen. Offensichtlich ist es aber wohl noch
nicht behoben. Ich konnte aus Zeitgründen keine Fehlermeldung an
Combit senden und bin sogar zeitweise auf LL13 zurückgegangen.

Eine andere Anwendung nutzt LL13 mit deutlich mehr Usern - die habe
ich noch nicht umgestellt - werde wohl auch noch damit warten.

regards

 Uwe

Uwe Hein Folkwang Musikschule der Stadt Essen / Germany
DevGroup-Ruhrpott.net

Das ist keine Lösung, da Speicherfehler nur verdeckt wird. Dieses
Work-A-Round hab ich zur Zeit auch im Projekt drin (ich mein nicht das
Dispose sondern das try…catch). Was aber nicht schön ist! Denn diese
Fehlermeldung zeigt deutlich auf einen Speicherfehler im unmanaged Bereich
hin und dieser sollte früher oder später mal behoben werden (btw. bei LL13
bzw. 12 gab es solche Probleme auch. Nur seltener!)

Bei meinen Projekt kommt diese Fehlermeldung leider nicht nachvollziehbar,
sondern sporadisch. Mir ist es bis jetzt leider aber noch nicht gelungen die
Ursache zu ermitteln.

“Carsten Ilwig” <ille7@onlineho…> schrieb im Newsbeitrag
news:16959227200975848@combit.net…

Hallo Thomas,

schreib mal diesen Code in die Dispose-Methode des Formulars, in dass Du
den LL-Viewer eingebunden hast:

if ((lL_viewer != null) && (!lL_viewer.IsDisposed))
{
try
{
lL_viewer.Dispose();
lL_viewer = null;
}
catch { }
}

Damit sollte der Fehler nicht mehr auftreten.

Gruß
Carsten