第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 C# 中的非異步函數(shù)中使用 await 調(diào)用異步函數(shù)?

如何在 C# 中的非異步函數(shù)中使用 await 調(diào)用異步函數(shù)?

C#
寶慕林4294392 2022-11-22 10:20:34
我有一個異步函數(shù)調(diào)用 myAsyncfuntion() 看起來像這樣public async Task TakePhotoBasicAndSaveAndDisplayUWP(){    var photoImplementation = new MediaCaptureImplementation();    photoImplementation.TakePhotoTexture2DAsync();    // Some code here...    await photoImplementation.SavePhotoToPicturesLibraryAsync();}現(xiàn)在我想從另一個非異步函數(shù)調(diào)用這個函數(shù),所以我喜歡這樣。基本上,我將一個按鈕連接到 TakePhotoBasicAndSaveAndDisplay(),只要單擊該按鈕,該函數(shù)就會啟動內(nèi)部的異步函數(shù)。但是異步函數(shù)似乎沒有被調(diào)用。public void TakePhotoBasicAndSaveAndDisplay(){   #if WINDOWS_UWP    var task = Task.Run(async () => await TakePhotoBasicAndSaveAndDisplayUWP());   #endif}誰能幫幫我?我正在團結(jié)一致
查看完整描述

3 回答

?
慕容708150

TA貢獻1831條經(jīng)驗 獲得超4個贊

正如 Marc 評論的那樣,“我如何從同步方法調(diào)用異步方法”的唯一正確答案是“你不這樣做”。

但是異步函數(shù)似乎沒有被調(diào)用。

它肯定會被調(diào)用,但它可能無法正常工作,因為它不在主 UI 線程上。Task.Run在線程池線程上執(zhí)行它。此外,我懷疑永遠不會等待taskin 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

}


查看完整回答
反對 回復(fù) 2022-11-22
?
米脂

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

    }


查看完整回答
反對 回復(fù) 2022-11-22
?
隔江千里

TA貢獻1906條經(jīng)驗 獲得超10個贊

您始終可以在末尾調(diào)用帶有 .Wait() 的異步方法。

myAsyncfuntion.Wait();

它有點毀了整個異步的東西。該方法將同步阻塞,直到任務(wù)完成。

您可以查看此回復(fù)以了解更多詳細信息。


查看完整回答
反對 回復(fù) 2022-11-22
  • 3 回答
  • 0 關(guān)注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號