Forum: PC-Programmierung C# Event Handler Priorität


von Gast (Gast)


Lesenswert?

Hallo,

wie kann man Event Handler in C# Prioritäten verleihen?

Beispiel:

In einem Windows Frame sind zwei Buttons.

Start     und       Stopp


Klicke ich Start, gelange ich in den Start_Click Event Handler.
Angenommen dort läuft nun eine Schleife die 1 min Durchlaufzeit 
benötigt.



Klicke ich Stopp, während der Abarbeitung der Schleife im Event Handler 
Start_Click, tut sich nicht sofort etwas. Erst wenn die Schleife 
komplett abgearbeitet ist, wird in den Event Handler Stopp_Click 
verzweigt.

Wie kann man erzwingen, dass sofort in den Event Handler Stopp_Klick 
verzweigt wird und nicht erst dann, wenn das Event Start_Klick 
abgearbeitet ist.

von Chris .. (dechavue)


Lesenswert?

Hallo,

Das Stichwort heist Threading. Du solltest generell Langlaufende 
Aktionen in einen eigenen Thread auslagern um die GUI nicht zu 
blockieren. Dazu könntest du b.B. de BackgroundWorker benutzen, da der 
einem schon einigen an Synchronisation abnimmt.

Es gäbe schon noch den "Dirty-Hack" Application.DoEvents um innerhalb 
der Schleife die Abarbeitung der Nachrichtenschleife (anstehende Events 
werden abgearbeitet) anzustossen, was aber nicht empfehlenswert ist, 
besser setzt du dich mit Threads auseinander.

greetz dechavue

PS: Noch ein interessanter Link zu dem Thema: 
http://www.mycsharp.de/wbb2/thread.php?threadid=27992

von verzweifelter c#ler (Gast)


Lesenswert?

Chris E.

DANKE viel mals für deinen post. ich hab bereits ewig nach einer methode 
gesucht, die die events während einer schleife abhandelt. konnte keine 
threads benutzen und war daher auf solch eine methode angewiesen. hab 
googelt was die tastatur hergab, auf englisch auf deutsch, aber nichts, 
und dann gelang ich durch so eine unscheinbare überschrift auf diese 
seite, und voila es geht!!

DANKe vielmals ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.