TPL:在OnCompleted事件中检查任务是否失败

本文关键字:检查 任务 是否 失败 事件 OnCompleted TPL | 更新日期: 2023-09-27 18:15:12

我有一个这样的任务:

var migrateTask = Task.Run(() =>
    {
        //do stuff
     });
migrateTask.ConfigureAwait(true).GetAwaiter().OnCompleted(this.MigrationProcessCompleted);

如何告诉方法MigrationProcessCompleted,如果我得到一个异常或任务是错误的初始线程(在做东西代码块)?

是否有一种方法来找到这没有使任务类成员/属性?

TPL:在OnCompleted事件中检查任务是否失败

您不应该真正调用.GetAwaiter(),它是为编译器使用的。

如果你可以使用await,你的代码就像

一样简单
public async Task YourFunc()
{
    Exception error = null
    try
    {
        await Task.Run(() =>
        {
            //do stuff
         });
    }
    catch(Exception ex)
    {
        error = ex;
    }
    MigrationProcessCompleted(error)
}
private void MigrationProcessCompleted(Exception error)
{
     //Check to see if error == null. If it is no error happend, if not deal withthe error.
}