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

标签 c# .net asynchronous

我已经创建了如下所示的异步方法

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

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

最佳答案

你需要提取出AddAttachment任务,然后你可以使用continuation tasks指定在主任务失败时执行什么任务,以及在主任务成功完成时执行什么任务。

在此示例中,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);

关于c# - 如何在执行异步方法后调用成功的回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050967/

相关文章:

asp.net - 使用 web.config 停止目录中的热链接

c# - 异常堆栈跟踪没有行号

testing - Ember-auth 登录测试因 json 失败

javascript - RxJS异步循环

c# - .NET 加密字节数组

c# - 对 DataTable 进行排序不起作用

c# - 异步迭代器任务<IEnumerable<T>>

c# - 异步方法导致奇怪的异常

c# - 在WPF应用程序中找不到Startupuri

c# - 异步架构