簡體   English   中英

如何在執行異步方法后調用成功的回調函數?

[英]How to call a Successful Callback function after executing an Asynchronous method?

我創建了一個像下面這樣的異步方法

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

我需要在AddAttachment()方法成功處理后執行回調函數。 我怎么能這樣呢?

您需要提取AddAttachment任務,然后您可以使用continuation任務來指定主任務失敗時要執行的任務,以及主任務成功完成時要執行的任務。

在這個例子中MethodToRunWhenFinishSuccessfully將運行如果AddAttachment完成,BackUpQueuesMail將情況AddAttachment失敗運行。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM