当我们需要在应用程序中执行耗时的任务时,我们可以使用Task
类。下面是使用Task
执行任务并等待任务完成的攻略:
创建Task任务
要创建一个Task
,我们可以使用Task.Run()
方法来启动一个任务。该方法接受一个委托(Delegate)类型的参数,该委托指定要在新线程上运行的代码。
例如,下面是一个简单的Task
创建示例:
Task task = Task.Run(() =>
{
// 需要执行的代码
});
等待任务完成
当我们需要等待任务完成时,我们可以调用Task.Wait()
方法。这会阻塞当前线程直到任务完成并返回结果。
例如,下面是一个示例,它执行了两个任务并等待它们都完成:
Task<int> task1 = Task.Run(() =>
{
// 需要执行的任务1代码
return 1;
});
Task<int> task2 = Task.Run(() =>
{
// 需要执行的任务2代码
return 2;
});
// 等待所有任务完成并获取结果
Task.WaitAll(task1, task2);
// 打印任务结果
Console.WriteLine(task1.Result); // 输出 1
Console.WriteLine(task2.Result); // 输出 2
在上面的代码中,Task.WaitAll()
方法等待所有指定的任务完成。一旦所有任务都完成,我们可以使用Task.Result
属性获取它们的结果。
注意:如果任务在等待操作完成时抛出了异常,则调用Task.Result
属性时会重新抛出该异常。
使用async和await
还有一种更为简单和常用的方法来等待任务完成:使用async
和await
关键字。
async
表示异步操作,await
表示等待异步操作完成。使用async
和await
可以使代码更加简洁和易读。
例如,下面是使用async
和await
等待任务完成的示例:
async Task MyMethod()
{
// 创建并等待任务
int result = await Task.Run(() =>
{
// 需要执行的代码
return 1;
});
// 打印任务结果
Console.WriteLine(result);
}
在上面的示例中,我们创建了一个异步方法MyMethod()
,它使用await
等待一个Task
完成,并在任务完成后打印结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#如何Task执行任务,等待任务完成 - Python技术站