3 回答

TA贡献1831条经验 获得超4个赞
正如 Marc 评论的那样,“我如何从同步方法调用异步方法”的唯一正确答案是“你不这样做”。
但是异步函数似乎没有被调用。
它肯定会被调用,但它可能无法正常工作,因为它不在主 UI 线程上。Task.Run
在线程池线程上执行它。此外,我怀疑永远不会等待task
in var task = Task.Run(async () => await TakePhotoBasicAndSaveAndDisplayUWP());
,因此任何异常TakePhotoBasicAndSaveAndDisplayUWP
都会被忽略。即,异常说明某些 API 必须从主 UI 线程而不是线程池线程调用。
我点击一个按钮
TakePhotoBasicAndSaveAndDisplay
如果TakePhotoBasicAndSaveAndDisplay
实际上是一个事件处理程序,那么您可以使用async void
:
public async void TakePhotoBasicAndSaveAndDisplay()
{
#if WINDOWS_UWP
await TakePhotoBasicAndSaveAndDisplayUWP();
#endif
}

TA贡献1836条经验 获得超3个赞
只有当你不想等待它并且“不关心”你可以做到的结果时,你才这样做async void
public async void TakePhotoBasicAndSaveAndDisplayUWP()
{
var photoImplementation = new MediaCaptureImplementation();
photoImplementation.TakePhotoTexture2DAsync();
// Some code here...
await photoImplementation.SavePhotoToPicturesLibraryAsync();
}
比你可以称之为
public void TakePhotoBasicAndSaveAndDisplay()
{
#if WINDOWS_UWP
TakePhotoBasicAndSaveAndDisplayUWP();
#endif
}
- 3 回答
- 0 关注
- 163 浏览
添加回答
举报