111,113
社区成员




private void button1_Click(object sender, EventArgs e)
{
Thread t1 = new Thread(ThreadMain); //用线程,避免阻塞界面
t1.Start();
}
CancellationTokenSource cts = new CancellationTokenSource();
public void ThreadMain()
{
int count = 0;
while (count < 5) //要循环5次
{
count++;
//此处应该如何操作cts或者cts.Token,让第一次cts.Cancel()后能够在此复位,以继续正常运行Task???
Task.Factory.StartNew(MyTask, cts.Token);
Thread.Sleep(5 * 1000); //等待任务执行5秒
cts.Cancel(); //取消任务
richTextBox1.Text += "count = " + count.ToString() + "\r\n";
}
richTextBox1.Text += "已停止";
}
public void MyTask()
{
while (!cts.IsCancellationRequested) //判断是否取消任务,由上面的cts.Cancel()控制
{
richTextBox1.Text += DateTime.Now + "\r\n";
Thread.Sleep(1000);
}
}