我有两个任务t1
,t2
我从一个使用开始/结束异步模型设计的旧 API 生成,如下所示。但是我非常想一个接一个地运行它们。(这是 Azure 表存储 API)
Task<DataServiceResponse> t1 = Task.Factory.FromAsync(ctx1.BeginSaveChangesWithRetries(null, null), r => ctx1.EndSaveChangesWithRetries(r));
Task<DataServiceResponse> t2 = Task.Factory.FromAsync(ctx2.BeginSaveChangesWithRetries(null, null), r => ctx2.EndSaveChangesWithRetries(r));
await t1.ContinueWith(t => t2, TaskContinuationOptions.NotOnFaulted | TaskContinuationOptions.NotOnCanceled);
我阅读了FromAsync
文档,但没有说明这些任务(t1
& t2
)是否被触发:
FromAsync(IAsyncResult, Action<IAsyncResult>):
创建一个在指定的 IAsyncResult 完成时执行结束方法操作的任务。
- 成功执行后
t2
是否始终执行此保证?t1
- 我相信这段代码调用
Begin...
了开始/结束对的方法。通常操作(在这种情况下,向 Azure 服务发出 HTTP 请求)是在 end 方法中完成的吗?(我不太熟悉开始/结束实现中的内容) - 是否在声明
t1
之前开始(或已安排)await
(就像我使用的那样Task.Factory.StartNew
)?