API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Zapytania SQL, widoki, Crystal, definicje filtrów, szybkich raportów, wydruków, API, Hydra, .NET

Moderator: mikey

JarekZ
Posty: 148
Rejestracja: 02 paź 2014, 14:11
Rola: Administrator CDN XL
Lokalizacja: Bielsko Biała
Kontakt:

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: JarekZ »

dla "ułatwienia" ;) ;)
wywalenie AttachThreadToClarion(1);
powoduje, że dalej działa bez problemów :)

rafalW
Posty: 60
Rejestracja: 15 sty 2012, 14:13
Rola: Inny
Lokalizacja: Puławy

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: rafalW »

Dzieki
Czyli czas na reinstalacje kompa :)
JarekZ pisze:dla "ułatwienia" ;) ;)
wywalenie AttachThreadToClarion(1);
powoduje, że dalej działa bez problemów :)
Logowanie zawsze dziala, nawet jak wyjmiesz haspa :)
Ale dorzuc sobie jakies tworzenie dokumentu, najlepiej w petli kilka sztuk, w oddzielnym watku na bank bedziesz mial SEHException

rafalW
Posty: 60
Rejestracja: 15 sty 2012, 14:13
Rola: Inny
Lokalizacja: Puławy

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: rafalW »

Moze komus sie przyda. Przed zamknieciem aplikacji trzeba wywolac AttachThreadToClarion z parametrem 0, wazne aby to byl inny watek niz ten z ktorego korzystalismy do odwolan Api.
Jesli api bylo w nowym watku, to AttachThreadToClarion wywolujemy w watku okna. I odwrotnie, jesli api bylo w watku okna, to tworzymy nowy watek:

Kod: Zaznacz cały

protected override void OnClosing(CancelEventArgs e)
{
    base.OnClosing(e);

    ThreadStart ts = new ThreadStart(ApiCleanupThread);
    Thread t = new Thread(ts);
    t.Start();
}

private void ApiCleanupThread()
{
    CdnApi.AttachThreadToClarion(0);
}       

dotb
Posty: 13
Rejestracja: 28 sie 2013, 16:21
Rola: Administrator CDN XL

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: dotb »

viesiek1 pisze:W załączniku jest program który robi logowanie i wylogowanie z XL. U mnie działa. Testowałem na 2016.0. Wypróbuj, porównaj i daj znać jaki wynik.
ErpXlLogin.zip
Zastanawiam się gdzie powinienem podpinac AttachThreadToClarion w windows serwisie? Czy wystarczy na starcie serwisu? Czy za każdym razem jak jest wywoływana 1. metoda z API na logowanie?
Z góry dziękuję

rafalW
Posty: 60
Rejestracja: 15 sty 2012, 14:13
Rola: Inny
Lokalizacja: Puławy

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: rafalW »

Jesli logujesz sie zawsze w tym samym watku, to wystarczy raz

smsoftware
Posty: 27
Rejestracja: 10 wrz 2014, 06:31
Rola: Inny

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: smsoftware »

Standardowo ERP-XL nie obsługuje dostęu wuielowątkowego i stąd błąd.

Jeżlei mamy mieć wielowątkową obsługę API należy korzytsać z

[DllImport("ClaRUN.dll")]

public static extern void AttachThreadToClarion(int _flag);

Każdy nowy wątek ma na początku wywołać metodę AttachThreadToClarion(1)

RONINZGR
Posty: 2
Rejestracja: 11 maja 2012, 11:11
Rola: Administrator CDN XL
Wersja: 10

Re: API 2016 - AppCrash w ClaRUN.dll po zamknieciu aplikacji

Post autor: RONINZGR »

Witam.

Bardzo odgrzeję ten temat, ale mocno mnie zaciekawił.

Czy ktoś się spotkał, że wywołanie metody AttachThreadToClarion() wykonuje się w nieskończoność?
Mówiąc w prost, program uruchamia metodę ale nie otrzymuje końca jej działania tym samym aplikacja 'zawiesza' się na amen.

ODPOWIEDZ