c# - 如何在不阻塞的情况下等待一个任务完成后再调用另一个任务?

标签 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);

但如果我错了请纠正我,但 task2 是否有机会在 task1 执行时或之前执行?我想要类似 ContinueWith 的东西,其中代码不会阻塞,但 task2 在 task1 完成之前仍然不会执行。

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

有什么建议吗?

最佳答案

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

关于c# - 如何在不阻塞的情况下等待一个任务完成后再调用另一个任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7592903/

相关文章:

javascript - 运行异步函数 N 次,其中 N 取决于调用返回的内容

javascript - 如何在 JavaScript 中执行同步 HTTP 请求

embedded - 如何计算 RTOS 任务的时间

c# - 在 C#.net 中单击用户控件中的按钮关闭子窗体并打开另一个窗体?

c# - TakeWhile,但也获取停止它的元素

c# - 如何在运行时创建表达式

c# - 从 View 中 ListBox 中删除的文件更新 ViewModel 中的 ObservableCollection - WPF

javascript - 使用具有自定义延迟的 javascript 在循环中动态更改包装器背景

c# - 如果抛出异常,则取消所有异步方法

c# - 任务的 OnCompleted 回调在哪里?