3 回答

TA貢獻1831條經(jīng)驗 獲得超4個贊
正如 Marc 評論的那樣,“我如何從同步方法調(diào)用異步方法”的唯一正確答案是“你不這樣做”。
但是異步函數(shù)似乎沒有被調(diào)用。
它肯定會被調(diào)用,但它可能無法正常工作,因為它不在主 UI 線程上。Task.Run
在線程池線程上執(zhí)行它。此外,我懷疑永遠不會等待task
in var task = Task.Run(async () => await TakePhotoBasicAndSaveAndDisplayUWP());
,因此任何異常TakePhotoBasicAndSaveAndDisplayUWP
都會被忽略。即,異常說明某些 API 必須從主 UI 線程而不是線程池線程調(diào)用。
我點擊一個按鈕
TakePhotoBasicAndSaveAndDisplay
如果TakePhotoBasicAndSaveAndDisplay
實際上是一個事件處理程序,那么您可以使用async void
:
public async void TakePhotoBasicAndSaveAndDisplay()
{
#if WINDOWS_UWP
await TakePhotoBasicAndSaveAndDisplayUWP();
#endif
}

TA貢獻1836條經(jīng)驗 獲得超3個贊
只有當(dāng)你不想等待它并且“不關(guān)心”你可以做到的結(jié)果時,你才這樣做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 關(guān)注
- 160 瀏覽
添加回答
舉報