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

时间:2013-02-05 14:18:21

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

其中file为StorageFile

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

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

1 个答案:

答案 0 :(得分:7)

只需访问Result

Stream videoStream = file.OpenStreamForWriteAsync().Result;

这将阻止任务完成执行 请注意,如果在UI线程上执行该代码,则可能导致程序死锁 有关详细信息,请参阅this blog post