2017-01-24 3 views
1

Ich habe ein Formular in C# mit einem Textfeld.Abbrechen Parallelschleife von Formular

Ich möchte ein Ereignis so ausführen, dass jedes Mal, wenn der Text in der Textbox geändert wird, die letzte parallel.for-Schleife abbricht und mit den neuen Informationen neu startet, aber ich kann nicht herausfinden, wie das alte Stornierungs-Token zum Abbrechen abgerufen wird die vorherige Iteration, als dieses Ereignis ausgeführt wurde.

Ich hoffe, dass der Code unten erklärt, was i

private void Textbox_TextChanged(object sender, EventArgs e) 
    { 

     //call previous cancellation token from Textbox.tag and execute 

     CancellationTokenSource cts = new CancellationTokenSource(); 
     ParallelOptions op = new ParallelOptions(); 
     op.CancellationToken = cts.Token; 
     Parallel.For(0, 1, op, t => 
     { 
      //Store cancellation token in textbox.tag 

      //do stuff 
     }); 
    } 

Vielen Dank im Voraus tun wollen

Antwort

2

Sie benötigen/store es Anwendungsbereich außerhalb des Verfahrens zu erklären:

private CancellationTokenSource cts = new CancellationTokenSource(); 
private ParallelOptions op = new ParallelOptions(); 

private void Textbox_TextChanged(object sender, EventArgs e) 
    { 

     //call previous cancellation token from Textbox.tag and execute 
     cts.Cancel(); 

     cts = new CancellationTokenSource(); 
     op = new ParallelOptions(); 

     op.CancellationToken = cts.Token; 
     Parallel.For(0, 1, op, t => 
     { 
      //do stuff 
     }); 
    } 
Verwandte Themen