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

C# 如何在执行异步方法后调用成功的回调函数?,c#,.net,asynchronous,C#,.net,Asynchronous,我创建了一个异步方法,如下所示 System.Threading.Tasks.Task.Factory.StartNew( () => AddAttachment(document, docId, user)).ContinueWith( task => BackUpQueuesMail(task.Exception

我创建了一个异步方法,如下所示

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

我需要在AddAttachment()方法处理成功后执行回调函数。我怎样才能做到这一点呢?

只需将
OnlyOnFaulted
更改为
OnlyOnRanToCompletion
一种方法是:


您需要提取AddAttachment任务,然后可以使用指定如果主任务失败,要执行的任务,以及如果主任务成功完成,要执行的任务

在此示例中,如果AddAttachment已完成,则将运行MethodUnwhenFinishSuccessfully,如果AddAttachment失败,则将运行BackUpQueuesMail


你不需要延迟启动。使用StartNew即可。
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) {}

}
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);