如何在执行异步方法后调用成功回调函数

本文关键字:调用 成功 回调 函数 异步方法 执行 | 更新日期: 2023-09-27 17:49:41

我创建了如下的异步方法

 System.Threading.Tasks.Task.Factory.StartNew(
                                        () => AddAttachment(document, docId, user)).ContinueWith(
                                            task => BackUpQueuesMail(task.Exception, information, list),
                                            TaskContinuationOptions.OnlyOnFaulted);  

我需要在addatattachment()方法处理成功后执行回调函数。这怎么可能?

如何在执行异步方法后调用成功回调函数

您需要提取出addatattachment任务,然后您可以使用延续任务来指定如果主任务失败执行什么任务,如果主任务成功完成执行什么任务。

在本例中,如果 addatattachment 完成,MethodToRunWhenFinishSuccessfully将运行,如果 addatattachment 失败,BackUpQueuesMail将运行。

var addAttachmentTask = Task.Factory.StartNew(() => AddAttachment(document, docId, user));
addAttachmentTask.ContinueWith(t => MethodToRunWhenFinishSuccessfully(t), TaskContinuationOptions.OnlyOnRanToCompletion);
addAttachmentTask.ContinueWith(t => BackUpQueuesMail(task.Exception, information, list), TaskContinuationOptions.OnlyOnFaulted);

一种方法是:

System.Threading.Tasks.Task.Factory.StartNew(
                                        () => AddAttachment(document, docId, user)).ContinueWith(
                                            task => OnComplete(task), }
                                            TaskContinuationOptions.None);  

private void OnComplete(task)
{
   if(task.IsFaulted)
   {
   }
   else if(task.IsComplete) {}
}

OnlyOnFaulted改为OnlyOnRanToCompletion