ulozeni stavu aplikace pri "nasilnem" ukonceni aplikace OS
snazim se osetrit ukonceni moji aplikace pri nedostatku pameti a naslednem automatickem nasilnem ukonceni vyvolanem OS... mainform aplikace slouzi pouze jako uvodni obrazovka, po spusteni se hned spusti "pruvodce", coz je prakticky nekonecny cyklus modalnich formularu...
mam ted ale problem s detekci nasilneho ukonceni formulare - OS zrejme ukoncuje modalni formulare pouze tak, ze jim nastavi DailogResult na OK a je hotovo... da se nejak detekovat, jestli byl dialog ukoncen nasilne? z DialogResult totiz nemuzu poznat, jestli byl form ukoncen uzivatelem nebo nasilne OS...
a dalsi vec o kterou mi jde a ktera s tim souvisi - jelikoz mam "pruvodce" jako modalni dialogy, objevuje se v seznamu bezicich uloh krome main-formu vzdycky i aktualni modalni okno a OS pak tedy neukoncuje celou aplikaci (resp main-form), ale jenom aktualni modalni formular... ja bych spis potreboval, aby OS bral moji aplikaci jako celek a v seznamu uloh ukazoval jenom main-form a ukoncoval automaticky taky primo mainform - da se toho nejak dosahnout?
mam ted ale problem s detekci nasilneho ukonceni formulare - OS zrejme ukoncuje modalni formulare pouze tak, ze jim nastavi DailogResult na OK a je hotovo... da se nejak detekovat, jestli byl dialog ukoncen nasilne? z DialogResult totiz nemuzu poznat, jestli byl form ukoncen uzivatelem nebo nasilne OS...
a dalsi vec o kterou mi jde a ktera s tim souvisi - jelikoz mam "pruvodce" jako modalni dialogy, objevuje se v seznamu bezicich uloh krome main-formu vzdycky i aktualni modalni okno a OS pak tedy neukoncuje celou aplikaci (resp main-form), ale jenom aktualni modalni formular... ja bych spis potreboval, aby OS bral moji aplikaci jako celek a v seznamu uloh ukazoval jenom main-form a ukoncoval automaticky taky primo mainform - da se toho nejak dosahnout?
A neposle ti spis WM_CLOSE, OK dialogu potvrzeny uzivatelem je jina zprava, ale na 100% to netvrdim..
mozny to je, ale kdyz se potom zeptam na DialogResult, tak je OK misto None - zkusim to jeste zjistit presne...
[CODE]
FormXY frm = new FormXY();
if (frm.ShowDialog() == DialogResult.OK){
//sem to spadne
}
[/CODE]
povedlo se mi ted aspon skryt okno z aktivnich uloh, tak mi ho treba ted aspon nebude ukoncovat ;)
[CODE]
using OpenNETCF.Win32;
....
Capture = true;
Win32Window hwnd = Win32Window.GetCapture();
Capture = false;
hwnd.ExtendedStyle |= WS_EX.TOOLWINDOW;
[/CODE]
[CODE]
FormXY frm = new FormXY();
if (frm.ShowDialog() == DialogResult.OK){
//sem to spadne
}
[/CODE]
povedlo se mi ted aspon skryt okno z aktivnich uloh, tak mi ho treba ted aspon nebude ukoncovat ;)
[CODE]
using OpenNETCF.Win32;
....
Capture = true;
Win32Window hwnd = Win32Window.GetCapture();
Capture = false;
hwnd.ExtendedStyle |= WS_EX.TOOLWINDOW;
[/CODE]
takze jeste doplnim z konverzace s RSteinem...
operacni system postupuje pri nedostatku pameti tak, ze napred posle aplikaci zpravu WM_HIBERNATE (aplikace by mela uvolnit maximum pameti, ale nemusi se jeste ukoncovat - v CF by se mel automaticky volat GC.Collect()), pokud je pameti jeste mene, posila zpravu WM_CLOSE - aplikace by mela ulozit svuj stav a zavrit se...
tyto zpravy by se mely dat odchytit pomoci MessageFilter, ktery se nastavi v ApplicationEx (obe tridy z OpenNetCF)... zatim jsem to ale nestihl vyzkouset - az vyzkosim, tak napisu dalsi report ;)
operacni system postupuje pri nedostatku pameti tak, ze napred posle aplikaci zpravu WM_HIBERNATE (aplikace by mela uvolnit maximum pameti, ale nemusi se jeste ukoncovat - v CF by se mel automaticky volat GC.Collect()), pokud je pameti jeste mene, posila zpravu WM_CLOSE - aplikace by mela ulozit svuj stav a zavrit se...
tyto zpravy by se mely dat odchytit pomoci MessageFilter, ktery se nastavi v ApplicationEx (obe tridy z OpenNetCF)... zatim jsem to ale nestihl vyzkouset - az vyzkosim, tak napisu dalsi report ;)