2016-05-11 18 views
2

Ich bin neu in C# Nebenläufigkeit und versucht eine grundlegende Anwendung mit zwei Schaltflächen, erste Schaltfläche klicken sollte eine Methode, die durch eine For-Schleife geht und nächste Schaltfläche klicken sollte sogar AbbrechenTask.Factory.StartNew ruft nicht die Methode

Task t; 
CancellationTokenSource tokenSource = new CancellationTokenSource(); 
bool cancelPressed = false; 

private void button1_Click(object sender, EventArgs e) 
{ 
    var tasks = new ConcurrentBag<Task>(); 
    var token = tokenSource.Token; 
    t = Task.Factory.StartNew(() => Count(token), token); 

    if (cancelPressed) 
    { 
     tokenSource.Cancel(); 
    } 

    tasks.Add(t); 
    Task.WaitAll(tasks.ToArray()); 
} 

private void Count(CancellationToken token) 
{ 
    for (int a = Int32.MinValue; a < Int32.MinValue; a++) 
    { 
     textBox1.Text = a.ToString(); 
     if (token.IsCancellationRequested) 
      break; 
    } 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    cancelPressed = true; 
} 

aber es ist die Count() wird nicht gefeuert. Was ist hier falsch?

Antwort

1

Ihre Schleifenbedingung ist falsch, den Code innerhalb der Schleife verursacht nicht a < Int32.MinValue-a < Int32.MaxValue

wie so excuted, ändern werden:

for (int a = Int32.MinValue; a < Int32.MaxValue; a++)