Nach mehrmaligem Aufruf und Abbruch des Druckdialoges bekomme ich eine Access Violation Exception mit folgendem Stack trace :
bei combit.ListLabel24.NativeMethods.LlSetOptionString64(Int32 hLlJob, Int32 nIndex, String pszBuffer)
bei combit.ListLabel24.LlCore.LlSetOptionString(LlOptionString option, String value)
bei combit.ListLabel24.ListLabel.set_LicensingInfo(String value)
bei Geraeteliste.MainForm.PrintBackgroundWorker_DoWork(Object sender, DoWorkEventArgs e) in C:\Users\faller\source\Workspaces\Arbeitsbereich\Geraeteliste\Geraeteliste\MainForm.cs:Zeile 328.
bei System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
bei System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
bei System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
bei System.Runtime.Remoting.Messaging.StackBuilderSink.AsyncProcessMessage(IMessage msg, IMessageSink replySink)
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
bei System.Threading.ThreadPoolWorkQueue.Dispatch()
Folgenden Code in einem BackgroundWorker verwende ich :
hwysoszynski
(combit Support - Helge Wysoszynski)
2
Hallo Herr Faller,
verwenden Sie in Ihrer Anwendung einen Schutzjob? Ggf. könnte es helfen (falls Sie keinen verwenden) Ihre Anwendung um diesen zu erweitern. Nähere Informationen hierzu können Sie unserem Knowledgebase-Artikel “Multithreading mit List & Label” unter:
Sollte unser Vorschlag keine Abhilfe schaffen, benötigen wir zur Klärung weitere Informationen von Ihnen, die auf dieser Plattform nicht sinnvoll ausgetauscht werden können. Gerne können Sie in unserem Supportportal unter https://www.combit.net/supportportal/ einen Support-Case eröffnen, bitte kopieren Sie dabei die relevanten Informationen aus diesem Thread in die Beschreibung und übermitteln Sie uns zusätzlich noch die Dump-Datei.
ich habe einen ziemlich komplizierteren Dataprovider (als oben im Beispiel?)
und eine bekomme nach 2 Aufrufen ein [Access Violation] -Fenster von LL heraus und einen Absturz der Anwendung. Es wird ein Log erzeugt:
bei einem Absturz im Code wie hier denke ich ist es besser direkt mit dem Support in Kontakt zu treten. Vielleicht vorher noch schnell sicherstellen, dass das aktuelle Service Pack verwendet wird und schauen ob es damit auch nachstellbar ist. Wenn ja, würde ich auch direkt ein vollständiges Debwin4-Log sowie ein Dump vom Absturz dazu packen, da man hier den Kontext nicht erkennt - also bei welchem Call mit welchem Parameter es Probleme gibt. Die Warnung im Log kann wichtig sein, muss aber nicht… ist aber doch sehr speziell.
Dennoch, weil es mich neugierig macht und @hwysoszynski darauf bereits hingewiesen hat:
Wird denn im Thread gedruckt?
Wenn ja, muss auch in diesem Thread das List & Label erstellt werden!
wir hatten den “Schutzjob” nachträglich hineingemogelt, irgendwie hat er nicht gezogen. Nachdem ich da etwas umstrukturiert habe, ist das Fehlerfenster erst mal weg (nach ü20 aufgepoppten Fenstern test).
Scheint es also doch gewesen zu sein.
Trotzdem nicht toll.
Wir können uns das gerne via Support noch genauer ansehen, wenn Sie möchten. Einen globalen Job empfehlen wir aber ohnehin zu verwenden - schon aus Performancegründen, da dann das ständige Laden und Entladen unserer DLLs vermieden wird. Für eine Analyse des ursprünglichen Absturzes würden wir - wie von @Oliver_Hambrecht geschrieben - eine Dump-Datei benötigen. Die Vorgehensweise ist hier beschrieben:
Diesen Thread würde ich dann aber zunächst als “gelöst” markieren.