Task的暂停,继续,取消
.
CancellationTokenSource tokenSource; CancellationToken token; ManualResetEvent resetEvent; public Form1() { InitializeComponent(); tokenSource = new CancellationTokenSource(); token = tokenSource.Token; resetEvent = new ManualResetEvent(true); button1.Text = "开始"; button2.Text = "暂停"; button3.Text = "继续"; button4.Text = "取消"; } private void button1_Click(object sender, EventArgs e) { int i = 0; Task task = new Task(async () => { while (true) { if (token.IsCancellationRequested) { return; } if (i == 100) { return; } resetEvent.WaitOne(); await Task.Run(() => { i += 1; this.Invoke(new Action(()=> { progressBar1.Value = i; })); Thread.Sleep(50); }); } }, token); task.Start(); } private void button2_Click(object sender, EventArgs e) { resetEvent.Reset(); } private void button3_Click(object sender, EventArgs e) { resetEvent.Set(); } private void button4_Click(object sender, EventArgs e) { tokenSource.Cancel(); } }
版权声明:本文为dangnianxiaoqingxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。