+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

LlPrinterSetup => AccessViolationException


(Bernhard Mühlhaus) #1

Hallo,

ich weise Drucker zu den einzelnen Projekten in einem seperaten Bereich zu, sodass kein OptionsDialog beim Druck stört. Das fine ich sehr praktikabel und würde ich auch ungern ändern. Doch scheint die dafür notwendige Funktion LlPrinterSetup keine Beachtung mehr zu finden und recht buggy geworden zu sein.

Die Funktion wird wie folgt verwandt:

LL = new ListLabel();
LL.Language = LlLanguage.German;
LL.LicensingInfo = "xxxx";
LL.Core.LlPrinterSetup(this.Handle (des WinForm-Hauptfensters), LlProject.Label, ProjectFile);
LL.Dispose();

=> LL13 LlPrinterSetup ging problemlos

=> LL20 LlPrinterSetup via Code oben einmal aufrufen und die Exception (siehe unten) erscheint, jedoch erst nachdem Dispose durchlaufen wurde und im eigenen Programm etwas anderes gemacht wird

=> LL21 (Trial) LlPrinterSetup schmiert mit der Exception (siehe unten) schon beim Aufruf der Zeile ab: LL.Core.LlPrinterSetup(this.Handle (des WinForm-Hauptfensters), LlProject.Label, ProjectFile); es wird gar nicht mehr bis zum Dispose gekommen.

Ist das ein Fehler (bekannter) oder “by Design” da kein Wert mehr drauf gelegt wird? Denn auch in der Doku steht:

[quote]Einfachere Variante von LlPrintOptionsDialog(). Diese Funktion muss vor LlPrint[WithBox]Start() aufgerufen werden, da sie die Druckerdefinitionsdatei direkt verändert. Von der Verwendung dieser Funktion wird abgeraten, LlPrintOptionsDialog() ist der Dialog der ersten Wahl.
[/quote]

Doch mit LlPrintOptionsDialog() können die Drucker-Vorgaben nicht im *.lbp File des Projektes geschrieben werden. Also nicht wirklich eine Alternative.

Mach ich im Code ggf. was falsch, oder hat jemande eine Idee um den Fehler zu umgehen/lösen/funktionierendes ServicePack?

Habt vielen Dank.
Bernhard

Exception:

System.AccessViolationException wurde nicht behandelt.
  HResult=-2147467261
  Message=Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist.
  Source=System.Windows.Forms
  StackTrace:
       bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.Run(Form mainForm)
       bei Management_Central.Program.Main() in d:\Work\Development\Applications\Management Central\Program.cs:Zeile 44.
       bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       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.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

(combit Support - Thomas Metternich) #2

Hallo Herr Mühlhaus,

vielen Dank für Ihren Beitrag.

Bei unseren Tests (mit Version 20 und 21) konnten wir das von Ihnen beschriebene Verhalten nicht reproduzieren.

Diese Frage läßt sich im Rahmen des Forums leider nicht abschließend klären - wir benötigen 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.

Mit freundlichen Grüßen

Thomas Metternich
Technischer Support
combit GmbH