在C#中,处理线程等待和延续的任务可以通过Task类来实现。Task类是.NET 中的一部分,提供了一种简单而强大的方式来处理异步操作。
一个例子
C#Action<string, int> log = (name, times) =>
{
this.BeginInvoke(new Action(() =>
{
txtValue.AppendText(name + "开始..."+System.Environment.NewLine);
}));
Thread.Sleep(times);
this.BeginInvoke(new Action(() =>
{
txtValue.AppendText(name + "完成..." + System.Environment.NewLine);
}));
};
List<Task> tasks = new List<Task>()
{
Task.Run(() =>
{
log("刘备",1000);
}),
Task.Run(() =>
{
log("张飞",2000);
}),
Task.Run(() =>
{
log("关羽",3000);
})
};
//Task.WaitAny(tasks.ToArray());//先开始,再一个个完成
//Task.WaitAll(tasks.ToArray());//全部完成
//Task.WhenAny(tasks.ToArray()).ContinueWith(x =>
//{
// this.BeginInvoke(new Action(() =>
// {
// txtValue.AppendText("完成了..." + System.Environment.NewLine);
// }));
//});//当一个完成后
Task.WhenAll(tasks.ToArray()).ContinueWith(x =>
{
this.BeginInvoke(new Action(() =>
{
txtValue.AppendText("都完成了..." + System.Environment.NewLine);
}));
});//当全部完成后
C#中处理任务等待和延续的不同方式。选择哪种方法取决于你的具体需求和场景。在实际开发中,推荐使用await
关键字来实现异步编程,因为它能更好地保持应用的响应性和性能。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!