C# + Sfera GT (InsERT) - przechwytywanie błędów

0

Witam.

Z racji tego że w Lazarusie nie mam możliwości wykorzystania bibliotek InsERT'u stawiam pierwsze kroczki w C#.
W sumie to jakieś tam podstawowe zagadnienia udało się opanować (napisać jakieś małe dodatku do Subiekta), jednak dziś napotkałem problem którego nie mogę rozwiązać.
Chodzi o przechwytywanie błędów.
Biblioteka udostępnia metodę Wczytaj() która zwraca błąd w przypadku gdy próbujemy wczytać dokument zablokowany przez innego użytkownika (np. poprzez jego edycję w tym czasie).
Próbowałem poradzić sobie z tym standardowym blokiem try catch:

                    try
                    {
                        Subiekt_Dokument = Subiekt_GT.Dokumenty.Wczytaj(Dokumenty[j]);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("DOKUMENT"+Dokumenty[j]+" JEST ZABLOKOWANY");
                    }

jednak w chwili próby wczytania zablokowanego dokumentu aplikacja zwraca błąd i się wysypuje.
blad.jpg

Jak sobie z tym poradzić ?

Z góry dziękuję za pomoc

0

Można zacząć od przesłania informacji z "Szczegółów" błędu

0

Szczegóły błędu:

 Szczegółowe informacje na temat wywoływania debugowania w trybie JIT (just in time)
zamiast tego okna dialogowego znajdują się na końcu tego komunikatu.

************** Tekst wyjątku **************
System.Runtime.InteropServices.COMException (0x80040F19): Nie można zablokować obiektu. Obiekt został zablokowany przez operatora MARCIN ŻURAWSKI na stacji USERPC.

   w InsERT.SuPozycja.set_IloscJm(Object pVal)
   w WindowsFormsApplication3.Form1.uruchom_subiekta()
   w WindowsFormsApplication3.Form1.Form1_Shown(Object sender, EventArgs e)
   w System.Windows.Forms.Form.OnShown(EventArgs e)
   w System.Windows.Forms.Form.CallShownEvent()
   w System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
   w System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
   w System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   w System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   w System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
   w System.Windows.Forms.Control.InvokeMarshaledCallbacks()


************** Zestawy załadowane **************
mscorlib
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.34014 built by: FX45W81RTMGDR
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
WindowsFormsApplication3
    Wersja zestawu: 1.0.0.0
    Wersja Win32: 1.0.0.0
    CodeBase: file:///C:/Users/User/Desktop/eINVENT%20CENY/przelicznik.exe
----------------------------------------
System.Windows.Forms
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.34003 built by: FX45W81RTMGDR
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
Microsoft.VisualBasic.PowerPacks.Vs
    Wersja zestawu: 10.0.0.0
    Wersja Win32: 11.0.50727.1
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks.Vs/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.Vs.dll
----------------------------------------
System.Core
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Microsoft.CSharp
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.CSharp/v4.0_4.0.0.0__b03f5f7f11d50a3a/Microsoft.CSharp.dll
----------------------------------------
Interop.InsERT
    Wersja zestawu: 1.170.0.0
    Wersja Win32: 1.3403.10.3025
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Interop.InsERT/1.170.0.0__a59bfa3a209beb60/Interop.InsERT.dll
----------------------------------------
Microsoft.VisualBasic
    Wersja zestawu: 10.0.0.0
    Wersja Win32: 12.0.20806.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System.Dynamic
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Dynamic/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Dynamic.dll
----------------------------------------
Anonymously Hosted DynamicMethods Assembly
    Wersja zestawu: 0.0.0.0
    Wersja Win32: 4.0.30319.34014 built by: FX45W81RTMGDR
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_32/mscorlib/v4.0_4.0.0.0__b77a5c561934e089/mscorlib.dll
----------------------------------------
mscorlib.resources
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_pl_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
    Wersja zestawu: 4.0.0.0
    Wersja Win32: 4.0.30319.33440 built by: FX45W81RTMREL
    CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_pl_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Debugowanie w trybie JIT **************
Aby włączyć debugowanie w trybie just in time (JIT), plik .config tej
aplikacji lub komputera (machine.config) musi mieć
wartość jitDebugging ustawioną w sekcji system.windows.forms.
Aplikacja musi być również skompilowana z włączonym
debugowaniem.

Na przykład:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Gdy debugowanie JIT jest włączone, wszystkie nieobsługiwane wyjątki
są wysyłane do debugera JIT zarejestrowanego na komputerze
i nie są obsługiwane w tym oknie dialogowym.


0
  1. Jeśli jest to zwykły COM to można jak najbardziej zainstalować w Delphi
  2. przechwycić wyjątek :-/
0
  1. W Delphi działa jak najbardziej, ale w Lazarusie jest problem (pytałem o to kiedyś na forum http://4programmers.net/Forum/Delphi_Pascal/210951-lazarus_-_import_biblioteki_dll_-_subiekt_gt_sfera)

  2. Wychodzi mój laicyzm... W jaki sposób (po za try catch) można przechwycić wyjątek ?

0

Trzeba sprawdzić, czy gdzieś wcześniej nie został zablokowany dokument.

0

@mmoroz Sfera nie zawiera metody sprawdzającej blokady, więc nie bardzo wiem jak to zrobić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1