111,076
社区成员




- 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);
- }
- }