[c#] Form_Closing event

Pagina: 1
Acties:

  • Bint
  • Registratie: Juli 2002
  • Laatst online: 13-02 11:49
Ik heb een applicatie, met een MDI, en een aantal MDI-childs.
in een van die MDI-childs wordt een taak gestart, die maar blijft lopen, totdat die wordt gestopt.

Als ik dat handmatig doe, is er niks aan de hand. Events worden gestuurd, en de taak wordt afgehandeld.

Als ik het programma afsluit, blijft het proces hangen, omdat de taak niet goed wordt gestopt.
Nu dacht ik:

ik gebruik het FormClosing event om de taak te stoppen. Maar dit geeft het volgende probleem:

als ik het sluiten cancel, dan sluit de taak goed af, maar sluit het programma natuurlijk niet.
Als ik het sluiten niet cancel, dan lijkt het of de windows Message Queue die events niet meer verstuurt, waardoor ze niet meer bij mijn taak terechtkomen, en dus niet afsluit, met als gevolg: een proces dat blijft hangen.


edit: ik programmeer in C#, .Net 2.0
Kan iemand mij misschien met een oplossing helpen?
Ik heb al geprobeerd om een while-loop in die FormClosing task te zetten, maar dat lukt niet, omdat de events die ik dan afschiet, op een of andere manier niet aankomen.

Memories of yesterday, will grow, but never die


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Sluiten cancelen
Taak stoppen
Wachten tot de taak gestopt is
Sluiten niet meer cancellen (e.Cancel = false)?

  • Bint
  • Registratie: Juli 2002
  • Laatst online: 13-02 11:49
dat is dus het probleem.
Als ik de taak probeer te stoppen, komt dat event niet aan, en dan kan ik cancellen wat ik wil, maar dan sluit dat form dus niet meer.

Memories of yesterday, will grow, but never die


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

Cancel je de event van de MDI child of Parent. Misschien heeft dat er iets mee te maken. Kun je iets meer info/(pseudo)code geven?

  • Plekuz
  • Registratie: September 2002
  • Laatst online: 02-01 15:26

Plekuz

available in strong mint

Bereik je het goed afsluiten van die taak al niet door een "try ... finally" block te gebruiken? In het finally stuk komt ie altijd, ook als je niet netjes zelf een taak beeindigd.

Dus:
code:
1
2
3
4
5
6
7
8
try
{
  "taak uitvoeren"
}
finally
{
  "taak afsluiten"
}

[ Voor 23% gewijzigd door Plekuz op 28-06-2006 16:56 ]

"There he goes. One of God's own prototypes. Some kind of high powered mutant never even considered for mass production. Too weird to live, and too rare to die."


  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 22-12-2025

PhysicsRules

Dux: Linux voor Eenden

Weakling schreef op woensdag 28 juni 2006 @ 16:53:
Bereik je het goed afsluiten van die taak al niet door een "try ... finally" block te gebruiken? In het finally stuk komt ie altijd, ook als je niet netjes zelf een taak beeindigd.

Dus:
code:
1
2
3
4
5
6
7
8
try
{
  "taak uitvoeren"
}
finally
{
  "taak afsluiten"
}
DIt is vooral interessant als bronnen (geheugen, connecties, e.d.) bezet blijven. Niet als een proces blijft hangen. Misschien dat dit wel werkt voor multithread, maar daar heb ik geen verstand van.

  • azuidhof
  • Registratie: April 2005
  • Laatst online: 07-01-2022
PhysicsRules schreef op woensdag 28 juni 2006 @ 17:07:
[...]

DIt is vooral interessant als bronnen (geheugen, connecties, e.d.) bezet blijven. Niet als een proces blijft hangen. Misschien dat dit wel werkt voor multithread, maar daar heb ik geen verstand van.
de Dispose overriden en daarin de boel afsluiten :?

Mijn .NET blog!


Verwijderd

Waarom gebruik je hier dan niet gewoon een thread voor (een BackgroundWorker bijvoorbeeld)? Zet je voor zo'n thread vervolgens de IsBackground property op "true" dan stopt het process bij afsluiten van de applicatie.
Pagina: 1