C#: In Thread auf Event reagieren

Gast #3988166
Lesenswert?
• ▲
▼
Hi,

ich eine C# Oberflächenanwendung benutzte ich einen Timer, in dem einige 
Berechnung gamacht werden. Nun möchte ich einen Teil in einem 
zusätzlichen Thread auslagern. In dem Timer von der GUI soll ein Event 
ausgelöst werden. Im Thread soll auf diesens Event ragiert werden. Wie 
würde man sowas in C# realisieren?
Gast #3988735
Lesenswert?
• ▲
▼
bastler schrieb:
> Hi,
>
> ich eine C# Oberflächenanwendung benutzte ich einen Timer, in dem einige
> Berechnung gamacht werden. Nun möchte ich einen Teil in einem
> zusätzlichen Thread auslagern.

Vielleicht kannst du ja einen System.Timers.Timer oder 
System.Threading.Timer verwenden. Dann musst du nicht zu Fuß einen 
Thread erzeugen.

> Im Thread soll auf diesens Event ragiert werden. Wie
> würde man sowas in C# realisieren?

Na ja, so wie mit nur einem Thread. Du darfst allerdings nicht auf das 
Userinterface zugreifen, ohne vorher den Kontext zu wechseln (ist unter 
allen Betriebssystemen, Frameworks und Programmiersprachen so, die ich 
kenne).
Hier eine kleine Hilfe für Windows Forms:
https://github.com/domenic/extensions/blob/master/WindowsFormsInvokingExtensions.cs

In WPF-Anwendungen kann man Application.Current.Dispatcher verwenden.

Du solltest natürlich auf mögliche Reentrance (mit Augenmerk auf 
Ausnahmesituationen, z.B. sehr hohe Systembelastung) und evtl. 
notwendige Synchronisation achten (wenn im GUI- und Timer-/Arbeitsthread 
auf die selben Daten zugegriffen wird; es kommt teilweise auch darauf 
an, ob man Invoke oder BeginInvoke benutzt).
Bevor das Fenster geschlossen wird: Timer deaktivieren und warten, bis 
ein evtl. gerade stattfindender "Timer-Durchlauf" beendet ist.

https://msdn.microsoft.com/en-us/magazine/cc164015.aspx

http://www.mycsharp.de/wbb2/thread.php?threadid=33113

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren