2016-08-25 4 views
1

Ich muss eine Schleife mitten in der Iteration (jeder Punkt während einer langen Reihe von Befehlen in einer while-Anweisung) anhalten. Während ich verstehe, wie Ereignis-Handles am Ende einer Iteration angehalten werden, bin ich mir nicht sicher, wie man einen ähnlichen Effekt während der Befehlsfolge erreicht.Wie pausiere ich eine Schleife in der Mitte der Iteration

Ein Beispiel für Klarheit:

Thread 1 : 

    while (true) 
    { 
    // commands 
    } 

    Thread 2 : 

    Console.ReadLine(); 

//if 1 is pressed the first thread (Thread 1) must immediately pause. 

Jede Hilfe wäre sehr dankbar. P. Ich bin ein Anfänger, also wäre eine detaillierte Erklärung von unschätzbarem Wert.

+0

erkläre dein Problem – Vikrant

Antwort

3

Ich bin mir nicht sicher, wie man einen ähnlichen Effekt während der Reihenfolge der Befehle erreicht.

Einfach ausgedrückt: Sie sollten nicht. Wenn Sie nicht wissen, was Code an irgendeinem Punkt macht, sollten Sie nicht versuchen, ihn zu unterbrechen. Natürlich, wenn dieser Code wählt, um das gleiche aufzurufen "Während ich verstehe, wie Ereignis-Handles zu verwenden, um am Ende einer Iteration" Logik in der Mitte eines Flusses zu pausieren, dann gut - aber das ist für der laufende Code zu entscheiden, nicht der Controlling-Code. Anhalten von willkürlichem Code ist ein guter Weg, um Dinge zu brechen, weshalb Thread.Suspend has been deprecated.

Aber diese ist perfekt gültig:

while (true) 
{ 
    ElectivePauseIfNeeded(); 
    // ... some commands 
    ElectivePauseIfNeeded(); 
    // ... some more commands 
} 

Die hier ist, dass es die Schleife ist, dass, wenn er entscheidet, sicher anzuhalten, nicht den Außencode.

Verwandte Themen