Autor Téma: Aplikace z D6 občas zamrzne a hlásí "not responding"  (Přečteno 9987 krát)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #30 kdy: 23-06-2015, 14:18:56 »
HandleMessage obslouží jednu message událost. Pokud tedy chceme z nějakého důvodu chvilku počkat (třeba 500ms), tak spustíme Timer a po požadovanou dobu voláme HandleMessage. Vždy ji necháme doběhnout a pak akorát vyskočíme z cyklu.
Hmmm, cekani v event driven prostredi :-O

To se snad dela tak, ze vygeneruju po yplynuti 500 ms event a tu si obslouzim a mezitim necham, at si main thread obsluhuje, co potrebuje tj. neduplikuju pumpu zprav a cekam pomoci nejakeho timeru, ktery je vybaven generovan vhodne udalosti...

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #31 kdy: 23-06-2015, 14:36:38 »
pf1957: Zrovna nedávno jsem četl starší články z doby D6 a v nich se doporučovalo používání ProcessMesaages před thready(mám tím na mysli upřednostňování).Pokud ten program pochází z té doby, tak zde je možná vysvětlení.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #32 kdy: 23-06-2015, 14:40:25 »
pf1957: Zrovna nedávno jsem četl starší články z doby D6 a v nich se doporučovalo používání ProcessMesaages před thready(mám tím na mysli upřednostňování).Pokud ten program pochází z té doby, tak zde je možná vysvětlení.
A mas na neco takoveho odkaz ev. zdroj, protoze by me docela zajimalo, kdo takovy blabol mohl vypustit do sveta...

To mohlo max. platit v 16bitovem Delphi 1 na Win 3.x, ktery thready nemel...
« Poslední změna: 23-06-2015, 14:42:51 od pf1957 »

Offline hlucheucho

  • Plnoletý
  • ***
  • Příspěvků: 196
  • Karma: 2
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #33 kdy: 23-06-2015, 14:54:52 »

Citace
Zrovna nedávno jsem četl starší články z doby D6 a v nich se doporučovalo používání ProcessMesaages před thready
Začínal jsem asi před 10 lety. Už tehdy do mne kamoš hučel "použij thread". O ProcessMessages mi neřekl ani slovo. Pár pokusů o čekání v hlavním vlákně jsem taky udělal (se není čím chlubit). Byly spolehlivý = mohl jsem se spolehnout, že to často zhavaruje. :D

hu

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 423
  • Karma: 5
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #34 kdy: 23-06-2015, 15:11:41 »
Abych nebrečel hezky, ale na špatném místě, tak jsem to zkusil najít.Sami víte, že každý z nás chápe jakoukoliv informaci malinko jinak.Ale pokud si např. někdo přečetl tehdy na živě.cz od p. Kadlece o potřebě používání ProcessMessage a určité varování před užíváním či nadužíváním threadů, tak si to mohl vyložit, jak jsem výše popsal.

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 0
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #35 kdy: 24-06-2015, 06:46:15 »
Také jsem nikdy ProcessMessages nepoužíval, ale dostal jsem se k "hotovému" a nedá se s tím už moc dělat. Jinak chyba se nám už nevyskytla - budeme ale pokračovat v dalším testování. W7 prý myjí jinak řešenou akceleraci kreslení na canvas. Je tedy možné, že jsou oproti Win XP i další změny, které způsobí ono problematické zamrznutí.
« Poslední změna: 24-06-2015, 07:08:39 od age.new »

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 0
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #36 kdy: 24-06-2015, 07:08:20 »
Mohl bych se ještě zepatat .. máte někdo zkušnost s ukončováním D6 aplikací na Win 7? Po události Form.Close na hlavním formu občas aplikace zahlásí, že se čeká na ukončení programu, avšak občas zůstane process v task manageru a musí se ručně zrušit. Nahradili jsme proto Close příkazem Terminate. To vyřešilo process v task manageru, ale občas se stále objevuje čekání na ukončení programu. Opět - ve Windows XP to funguje bez problémů. Napadá někoho nějaká rada?

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 0
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #37 kdy: 24-06-2015, 09:35:21 »
Tak postupným testování ukončování aplikace dopadá nejlépe TerminateProcess(GetCurrentProcess, 0);

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 238
  • Karma: 9
    • Verze Delphi: XE6, Delphi 10.2 Tokyo
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #38 kdy: 24-06-2015, 11:36:47 »
máte někdo zkušnost s ukončováním D6 aplikací na Win 7?
Aplikace v Delphi 7 při napojení na databázi Firebird Embedded určité verze (2.0) se přestala ukončovat, ale zaprvé to byl problém Firebirdu (verze 1.5 a 2.5 nemá problém) a zadruhé ty Firebird nepoužíváš. Jinak nikdy žádné problémy s ukončením aplikace nemáme, a našich několik aplikací se používá na XP, Vistách, 7, 8, 8.1, 32 i 64 bit. Teď jsme to otestovali i na Windows 10, bez problémů.
Win10 Prof 64b, Firebird 2.5

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6165
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #39 kdy: 24-06-2015, 12:30:09 »
Mňa ako laika pri #37 napadlo, že tam musí byť neukončené vlákno.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 0
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #40 kdy: 24-06-2015, 12:37:13 »
Aplikace je to obsáhlá. Zkoušíme vše poctivě uvolňovat a FastMM debug vypíše pouze nějaké statické struktury. 

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1559
  • Karma: 37
    • Pepak.net
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #41 kdy: 25-06-2015, 07:08:35 »
Máme D6 instalováno mimo program files. To proč nevidí bpl soubory které mají správně nastavenou cestu a fyzicky tam skutečně jsou - to mi hlava nebere.
Protože User Account Control a s tím spojená virtualizace některých částí filesystému, zejména obsahu Program Files.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 3006
  • Karma: 108
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #42 kdy: 25-06-2015, 08:57:24 »
Máme D6 instalováno mimo program files. To proč nevidí bpl soubory které mají správně nastavenou cestu a fyzicky tam skutečně jsou - to mi hlava nebere. 

Mas cestu k BPL v promennych prostredi PATH? Ale pozor - pokud je cesta v PATH delsi nez limit 2048, tak i kdyz je tam cesta uvedena, Windows ji ignorují nebo zkracují.
Např. https://www.devexpress.com/Support/Center/Question/Details/B139550

Novější verze (tak asi XE3 +) zobrazují warning při problémech s cestou.
Hodně programů, včetně každé verze Delphi tam cpou svoje cesty.
Embarcadero MVP - Czech republic

Offline age.new

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 0
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #43 kdy: 25-06-2015, 09:31:18 »
U D6 se nastavuje přímo BPL cesta, která byla správná i soubory se v cílovém umístění fyzicky nacházeli. Ale to už je momentálně jedno. Chyba se již neprojevuje tři dny po sobě, takže jsme snahu oživení D6 na pracovním stroji zrušili.


Offline zdenek

  • Plnoletý
  • ***
  • Příspěvků: 139
  • Karma: 8
Re:Aplikace z D6 občas zamrzne a hlásí "not responding"
« Odpověď #44 kdy: 26-06-2015, 11:10:27 »
A co to přeložit třeba v D7 a zkusit jestli se to bude chovat jinak, nebo v XE*. Jestli tam bude rozdíl, může to být ve VCL.