c# - 如何使异步函数(如 OpenStreamForWriteAsync)同步?

标签 c# multithreading asynchronous synchronization task-parallel-library

我正在开发 Windows Phone 8 应用程序。我必须将视频保存到相机胶卷文件夹中。

要获取相机胶卷文件夹的文件流,我使用以下 function :

[CLSCompliantAttribute(false)]
public static Task<Stream> OpenStreamForWriteAsync(
    this IStorageFile windowsRuntimeFile
)

例如:

Stream videoStream = await file.OpenStreamForWriteAsync();

文件在哪里 StorageFile .

由于需要,我想删除此 await 并使函数同步。

编辑:
PS:我在不同的线程上执行这个函数,我希望那个线程是同步的。我想在创建文件流后对其进行写入。

最佳答案

只需访问Result:

Stream videoStream = file.OpenStreamForWriteAsync().Result;

这将阻塞直到任务完成执行。
请注意,如果该代码在 UI 线程上执行,这可能会导致程序死锁。
请引用this blog post了解更多信息。

关于c# - 如何使异步函数(如 OpenStreamForWriteAsync)同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14709619/

相关文章:

c# - 构造函数限制

javascript - Express 中间件中的 Axios 出现错误 - 发送 header 后无法发送 header

c# - 如何优化linq中的FirstOrDefault语句

c# MySqlConnector 查询和 FOUND_ROWS()

c# - 我可以在运行时使用属性有条件地控制方法调用吗?

multithreading - 如何在将现有对象传递到该控制台的同时在我的应用程序中生成 IPython qtconsole

multithreading - 将多个嵌入式 javafx JFXPanel 管理到 swing tabbedpane 中

eclipse - Eclipse CDT无法解析的原子类型

java - 如何获取图像的高度和宽度?

javascript - 回调运行时进行 Mocha 测试