如何等待一个任务完成而不阻止调用另一个任务?

时间:2011-09-29 05:37:41

标签: c# asynchronous task

尝试做这样的事情:

Task task1 = Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task1Data, 0, task1Data.Length, null, TaskCreationOptions.AttachedToParent);

Task task2 = Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task2Data, 0, task2Data.Length, null, TaskCreationOptions.AttachedToParent);

但如果我错了,请纠正我,但在task1执行期间或之前,task2可能无法执行吗?我想要一些类似ContinueWith的东西,代码不会阻塞,但task2仍然不会执行,直到task1完成。

我尝试了Task task2 = new Task(...),所以我可以调用task1.ContinueWith(task2);但不会编译。我很确定我必须使用FromAsync(自动运行)。我认为将task1.Wait();放在两行之间会起作用,但不会阻止它吗?试图远离阻挡..

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

task1.ContinueWith(t=>Task.Factory.FromAsync(stream.BeginWrite, stream.EndWrite, task2Data, 0, task2Data.Length, null, TaskCreationOptions.AttachedToParent));