簡體   English   中英

等待一個無效的異步方法

[英]Wait for a void async method

如何等待void async方法完成其工作?

例如,我有一個 function 如下所示:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保所有內容都已加載,然后再繼續其他地方。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

如何等待void async方法完成其工作?

例如,我有一個如下所示的功能:

async void LoadBlahBlah()
{
    await blah();
    ...
}

現在我想確保在繼續其他地方之前已經加載了所有內容。

我已經閱讀了該線程的所有解決方案,它真的很復雜......最簡單的解決方案是返回類似布爾值的東西:

async bool LoadBlahBlah()
{
    await blah();
    return true;
}

存儲或檢查返回值不是強制性的。 你可以這樣做:

await LoadBlahBlah();

...如果出現問題,您可以返回false

您可以簡單地將返回類型更改為 Task 並在 function 末尾調用await Task.CompletedTask ,例如:

async Task MyFunction() {
    await AnotherFunction();

    await Task.CompletedTask;
}

我發現這比在對Task.Run(() => {... });的調用中包裝整個 function 主體更簡單。 .

async Task LoadBlahBlah()
{
    await blah();
    ...
}

LoadBlahBlah().Wait();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM