以下内容主要来自于C#并发编程经典实例:为读书的一些记录和练习。
1、在异步中等待一段的时间
Task.Delay(timeSpan);
2、报告进度
static void Main(string[] args)
{
CallMyMethodAsyc();
Console.WriteLine("Main End");
Console.Read();
}
static async Task MyMethodAsync(IProgress<double> progress = null)
{
double percentComplate = 0;
while (percentComplate < 100)
{
await Task.Run(() =>
{
Task.Delay(TimeSpan.FromMilliseconds(10));
});
percentComplate += 2;
if (progress != null)
{
progress.Report(percentComplate);
}
}
}
static async Task CallMyMethodAsyc()
{
var progress = new Progress<double>();
progress.ProgressChanged += progress_ProgressChanged;
await MyMethodAsync(progress);
}
static void progress_ProgressChanged(object sender, double e)
{
Console.WriteLine(e);
}
等待一组任务完成或者任意一个任务完成
Task.WhenAll();
Task.WhenAny();