Forum Delphi.cz

Delphi => Obecné => Téma založeno: age.new 07-03-2019, 08:21:31

Název: Zamrznutí aplikace při hledání síťového disku
Přispěvatel: age.new 07-03-2019, 08:21:31
Zdravím Delphi.cz komunitu,

narazil jsem na jeden velký problém, který způsobuje zamrznutí spuštěné aplikace psané v Delphi 7. Aplikace si při spuštění mapuje síťové disky pomocí bat souboru. V případě funkční sítě vše funguje jak má, pokud je ale cílový počítač nedostupný, dojde k vytuhnutí - patrně se čeká na nějaký timeout. Ukončení aplikace lze poté pouze jen přes správce procesů. Zde se poté začínají objevovat kopie cmd.exe, které již nezmizí.

To, že Windows jsou schopné vytuhnout při práci se sítí je známé. Lze výše uvedenému problému nějak předejít? Napadlo mě, zda neexistuje možnost, jak zavolat spuštění souboru tak, aby volající aplikace nečekala na odezvu - zde je patrně příčina problému.

Soubor se volá tímto příkazem:
Kód: Delphi [Vybrat]
  1. ShellExecute(Handle, 'open', PChar('DLL\StartNet.bat'), nil, PChar('DLL\'), SW_HIDE);

Díky za případné rady.
Alex.

Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: pf1957 07-03-2019, 09:20:20
Napadlo mě, zda neexistuje možnost, jak zavolat spuštění souboru tak, aby volající aplikace nečekala na odezvu - zde je patrně příčina problému.
Nevim, jestli bych sel touhle cestou. Ale pokud ano, tak bys to mel spoustet pomoci CreateProcess - pak mas nad tim kontrolu. Pokud pouzivas JCL, tak nekde tam jsou funkce  WinExec...., kde prinejmensim uvidis, jak se to dela, pokud je nebudes moct pouzit rovnou.
Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: age.new 08-03-2019, 08:49:04
Děkuji za rady.

CreateProcess nepomohlo, stejně tak WinExec. Aplikace se pak chová podivně a nejde např. regulérně ukončit (zůstane viset bez odezvy). Asi jedinou možností bude separátní mini aplikace (třeba i bez formů), které se postará o oddělené volání souboru StartNet.bat s Net Use příkazem. Dá se poté i celkem jednoduše zrušit, popřípadě hlídat zda nedošlo k opakovanému volání atd...
Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: vandrovnik 08-03-2019, 22:53:07
A je nezbytně nutné používat ty mapované disky? Jestli není lepší přímo UNC cesta...
Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: Peťo 09-03-2019, 09:19:38
A je nezbytně nutné používat ty mapované disky? Jestli není lepší přímo UNC cesta...

Tiež si myslím, že mapovanie diskov bolo nutné v čase MS-DOS aplikácií, ktoré nepracovali so sieťovými cestami alebo mali problém aj s príliš dlhou lokálnou cestou.

Pri použití UNC cesty sa vyhne prasačinám s bat súbormi, ale problém zostane rovnaký - pri nedostupnosti siete program vytuhne úplne rovnako.
Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: raul 09-03-2019, 09:27:30
Pingni si cilovy komp a podle toho pust pripojeni. To vse v separatnim vlakne.
Název: Re:Zamrznutí aplikace při hledání síťového disku
Přispěvatel: age.new 13-03-2019, 07:21:11
Ping je dobrý nápad. Tímto řešením se asi vydám.