[英]How to consume an awaitable in C++/Cli
async
/ await
在過去幾年中在 C# 世界中非常受歡迎。 異步函數也傾向於在應用程序中快速傳播:Awaitables 需要等待,因此調用函數必須是異步的,因此也是一個需要等待的 awaitable,等等。
我在 C++/Cli 項目中使用 C# 庫。 該庫公開異步 API。 Visual C++ 編譯器不支持async
/ await
。 因此,我無法等待庫提供給我的任何 API。
我有以下選擇:
有什么辦法可以使這項工作? 如果必須的話,我不介意同步執行異步 API。
對我來說,聽起來你的問題更像是一個更大問題的征兆。 我個人盡量避免將業務邏輯放在 C++-CLI 模塊中。 具體來說,我嘗試將ref class
功能限制為 3 個主要領域:
Task
的方法。我可能是錯的,但在你的情況下,聽起來你的 C++ 代碼沒有很好地解耦,你最終將它的不同部分連接到 C++-CLI 模塊中。
至於你的問題,我會使用Task.ContinueWith
系列方法來執行異步延續而不是async / await
。 然而,如果您希望在特定SynchronizationContext
(例如 UI 線程)上調用延續,則必須特別注意提供正確的TaskScheduler
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.