C#: In Thread auf Event reagieren

Gast #3988166
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
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

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.