09. april 2003 - 10:01Der er
3 kommentarer og 1 løsning
Capture shutdown events
Er det muligt at håndtere shutdown events, således programmet advarer brugeren før programmet lukkes?
Scenario:
Applikationen kører -> brugeren kommer til at vælge shutdown process fra taskmanageren -> applikationen fanger denne event og advarer med f.eks. en messagebox.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Shutdown vil forsøge at afslutte applikationen ved at sende en VM_EXIT eller ligenende besked til applikationn, så du burde kunne gøre det ved at hook din main forms Closing event!
protected override void OnClosing(CancelEventArgs e) { DialogResult result = MessageBox.Show("Er du sikker på at du ønsker at afslutte applikationen?", "Confirm", MessageBoxButtons.OKCancel); if (result != DialogResult.OK) { e.Cancel = true } else { base.OnClosing(e); } }
public static void Main() { //Dette kald bestemmer hvilken form der fungerer som main form Application.Run(new MyMainForm()); } }
OnClosing fanger det fint, problemet er bare at MessageBox.Show vil bremse tråden når popup boksen er blevet vist mens den venter på svar fra brugeren og task manageren vil opfatte dette som om at programmet hænger og vil derfor poppe op og spørge om man vil terminere alligevel. Denne 2. konfirmation kan du ikke komme uden om og svares der ja til den vil programmet naturligvis blive dræbt på den hårde måde, det er jo netop sikkerheden for at du kan dræbe alting, også tråde der hænger. Men konklusionen er, at OnClosing virker efter hensigten og giver dig mulighed for at advare brugeren om at eventuelle ugemte data vil gå tabt!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.