2011-01-03 3 views
0

Ich habe eine Windows-Anwendung erstellt, die verwendet wird, um jede Zeile aus der Tabelle zu lesen und jede Zeile der Daten an gespeicherte Prozedur übergeben. Angenommen, diese Arbeit dauert 2 Stunden (da es eine große Anzahl von Daten gibt). Und ich habe zwei Tasten platziert, pausieren und abbrechen. Beim Klicken auf pasue muss ich die Arbeit der Aktualisierung der Arbeit pausieren und muss fortgesetzt werden, wenn die Taste erneut gedrückt wird. Bitte geben Sie dazu einige Informationen an. Ich bin mit Visual Studio 2003 (mit 1.1 Framework) und SQL 2005. Ich C#Wie ein Prozess in Windows-Anwendung zu pausieren und fortzusetzen

Could you guys please explain how to put the main thread in background(while paused)... Please respond soon as it is urgent. 
+0

Google für "Producer Consumer" und für "Thread-Synchronisation" (Semaphore). – k3b

Antwort

0

Um für die Programmierung bin mit dem Zustand Ihrer Pause-Taste zu verfolgen, müssen Sie den Bewerbungsprozess eingehende Nachrichten von Zeit lassen zur Zeit. Die Implementierung hängt von der verwendeten Programmiersprache und möglicherweise dem Anwendungsframework ab.

1

Der Vorgang des Lesens von Zeilen sollte in einem separaten Thread erfolgen. Auf diesem Thread sollten Sie etwas davon haben (man beachte es nur die Idee und nicht eine genaue Code):

while(!mCancel) 
{ 
    if(mPaused==true) 
    { 
     Thread.Sleep(1000); 
    } 
    else 
    { 
     //do here the row reading 
    } 

} 

Die mCancel und mPaused sind globale Flags, die Sie wahr oder falsch von den UI-Tasten eingestellt. Wenn Sie die Pause-Taste drücken, stellen Sie mPased auf true ein. An diesem Punkt wird die Schleife für 1 Sekunde schlafen und dann wiederholen und überprüfen Sie die Flagge erneut und bei Bedarf wird wieder schlafen. Eine andere Möglichkeit wäre, die ManualResetEvent Klasse zu verwenden. Siehe Link für Details. YHis-Klasse wird für Signign zwischen Threads wie dem Haupt-Thread und einem Worker-Thread beispielsweise verwandt. Here ist ein Beispiel.

Bearbeiten: Die definitive guide to multi-threading von Joseph Albahari. Lesen Sie dies und alle Threading-Probleme werden gelöst.

+0

schlafen in einer Weile Schleife ist ziemlich lahm, aber wahrscheinlich reicht für eine verpissende im Haus Code –

+0

@David: Ja, ich weiß. Deshalb habe ich den anderen Weg vorgeschlagen. Aber die Sleep-Methode ist auf den ersten Blick einfacher zu verstehen. –

+0

Könnt ihr bitte erklären, wie man den Lesevorgang in einen eigenen Thread setzt. – gany

Verwandte Themen