在Windows Console Application (C /WinRT)專案中,入口點只是標準int main()功能。
那么如何開始使用異步代碼呢?
例如,我想呼叫一個方法
winrt::Windows::Foundation::IAsyncAction WriteToFileAsync()
{
// calls FileIO::WriteTextAsync etc
}
從main.
co_await 不能使用,即
int main()
{
winrt::init_apartment();
co_await ::WriteToFileAsync();
}
產生錯誤
function "main" cannot be a coroutine
我應該使用
int main()
{
winrt::init_apartment();
::WriteToFileAsync().get();
}
反而?
一般有沒有更好的方法?
uj5u.com熱心網友回復:
根據 C 標準的規定,main()函式不能是協程。如果函式使用co_await運算子或co_yieldandco_return關鍵字,則該函式是協程。
因此,您將不得不等待從main()函式呼叫的任何協程運行完成。C / WinRT中提供擴展函式get()和wait_for()用于IAsyncAction(和家庭),以做到這一點。
我不知道有什么“更好”的東西,雖然我也不明白為什么打電話get()很糟糕。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/386094.html
