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

vij*_*053 2 c# multithreading synchronization asynchronous task-parallel-library

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

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

[CLSCompliantAttribute(false)]
public static Task<Stream> OpenStreamForWriteAsync(
    this IStorageFile windowsRuntimeFile
)
Run Code Online (Sandbox Code Playgroud)

例如:

Stream videoStream = await file.OpenStreamForWriteAsync();
Run Code Online (Sandbox Code Playgroud)

文件是StorageFile.

我想删除这个await并使函数同步因为要求.

编辑:
PS:我在不同的线程上执行此函数,我希望该线程是同步的.我想在创建后写入该文件流.

Dan*_*rth 7

只需访问Result:

Stream videoStream = file.OpenStreamForWriteAsync().Result;
Run Code Online (Sandbox Code Playgroud)

这将阻止,直到任务完成执行.
请注意,如果在UI线程上执行该代码,则可能导致程序死锁.有关详细信息,
请参阅此博客文章.

  • 如果此代码在UI线程上运行,这将会死锁. (2认同)