C # asynchrone Aufrufmethode in regelmäßigen Abständen

8

Hauptthread der Anwendung macht etwas Arbeit.

Es gibt auch einen Timer, der alle 10 Minuten eine Methode aufrufen soll, die asynchron laufen soll.

Könnten Sie mir bitte ein gutes Beispiel geben, wie Sie das organisieren?

    
Ksice 25.06.2012, 14:39
quelle

4 Antworten

12

Ich würde nicht empfehlen, einen expliziten Thread mit einer Schleife und einem Ruhezustand zu verwenden. Es ist schlecht und hässlich. Zu diesem Zweck gibt es Timer-Klassen:

Wenn dies keine GUI-App ist, können Sie System.Threading.Timer verwenden , um Code in einem anderen Thread regelmäßig auszuführen.

Wenn es sich um eine WinForms / WPF-App handelt, sehen Sie sich System.Windows an .Forms.Timer und System.Windows.Threading.DispatcherTimer jeweils. Diese sind praktisch, da sie ihren Code auf dem GUI-Thread ausführen und somit keine expliziten Invoke -Aufrufe benötigen.

Die Links enthalten auch Beispiele für jedes.

    
Tudor 25.06.2012, 14:43
quelle
1

Am einfachsten ist es, eine große Funktion aufzurufen, die zwischen den Aktionen 10 Minuten lang schläft. Dies blockiert nichts, weil es in einem anderen Thread ist.

In .NET 4 würden Sie dies mit der Klasse Task tun:

%Vor%

(Dieser Code wurde nicht getestet)

    
fero 25.06.2012 14:41
quelle
0

Verwenden Sie einen BackgroundWorker-Thread.

%Vor%     
Vok 25.06.2012 14:43
quelle
-2

Starten Sie einen anderen Thread, der eine Schleife ausführt

Innerhalb der Schleife; Schlaf für 10 Minuten, dann rufen Sie Ihre Methode, wiederholen

    
user1480312 25.06.2012 14:43
quelle