mojaSymfonia FORUM
https://forum.mix-soft.pl/

Niezwalnianie zasobów w raporcie przyczyną błędu?
https://forum.mix-soft.pl/viewtopic.php?f=15&t=7953
Strona 1 z 1

Autor:  arnoldinho [ 2017-06-08, 18:23 ]
Tytuł:  Niezwalnianie zasobów w raporcie przyczyną błędu?

Witam, mojej zabawy z symfonią ciąg dalszy. Tym razem jest to problem cięższego kalibru. Przy 3-cim wywołaniu raportu dla pojedynczego dokumentu lub zaznaczeniu 3 dokumentów program zawiesza się. Dla 2 dokumentów wszystko działa jak należy.
Cytuj:
String Plik_z_Haslem = KatalogFirmy() + "daneDostepowe.txt"
Int Numer_plik = Open Plik_z_Haslem For input
String UserName
String Password
Input # Numer_plik, UserName
Input # Numer_plik, Password

Buf = UserName //Przypisanie zawartości zmiennej Buf
Delete "\n" //Wykonanie polecenia Delete
UserName = Buf //Nadpisanie Username prawidłową wartością
Close Numer_plik //Zamknięcie pliku

int pozycjaWTabeli
string dataF
string kod
string seria
string nazwa
string plattermin
baseDK dk
dispatch dll
dispatch xNull

long lPoz = SetTaggedPos(FS)

while lPoz != 0

dk.GetRecById(GetLineId(lPoz))
dataF=dk.GetField("Data")
kod = dk.GetField("kod")
seria = dk.GetField("seria")
nazwa = dk.GetField("nazwa")
plattermin = dk.GetField("plattermin")
dll.Create("PragmaExporter.ExporterClass")
print dll.Method(2,UserName,Password,dataF,kod,seria,nazwa,plattermin,"abc")
lPoz = SetTaggedPos(NX)
wend

if dll then print "Obiekt istnieje "
dll=xNull
if dll then print "Obiekt dalej istnieje"
print Close


Otrzymuję komunikat "Server zajęty" a po kilku chwilach "Upłynął limit czasu operacji".
Załącznik:
bledy2.png
bledy2.png [ 40.46 KiB | Przeglądany 2288 razy ]

Wywołana metoda nr 2 napisana w .NET zwraca stringa, więc raczej wina nie leży po jej stronie poza tym jest otoczona blokiem try-catch i wiedziałbym gdyby ona nawaliła. Dla 2 dokumentów raport printuje tego stringa a potem "Obiekt istnieje 1" czyli zasób obiektu dispatch dll jest zwolniony. Jak zwolnic obiekt baseDK? Przypisanie do nulla lub zera nic nie daje. Jeśli to nie ten obiekt to gdzie może być błąd? Dlaczego raport zawiesza symfonię akurat przy 3cim wystąpieniu?

Autor:  rafal [ 2017-06-08, 22:13 ]
Tytuł:  Re: Niezwalnianie zasobów w raporcie przyczyną błędu?

Zrób dll.Create przed pętlą. Gdzieś na początku raportu.

Autor:  arnoldinho [ 2017-06-14, 12:20 ]
Tytuł:  Re: Niezwalnianie zasobów w raporcie przyczyną błędu?

jednak wina serwera ale rada użyteczna

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/