問題タブ [taskcompletionsource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
101 参照

c# - TaskCompletionSource であり、スレッドセーフではないライブラリ

C# avaloniaアプリケーションで、開発者が提供する SDK を介して、スレッドセーフではないライブラリを使用しています。具体的にはWindows Zoom SDKです。一部の SDK 関数は、イベント ドリブン パターンに基づいて構築されています。SDK メソッドを呼び出した後、アプリケーションは実行結果のコールバックの到着を待つ必要があります。したがって、タスクベースの非同期パターンは、TaskCompletionSource を使用してアプリケーションに適用されました (以下のコードを参照してください)。

アプリケーションに async/await パターンが適用された後、SDK が正しく動作しません (詳細)。ただし、この質問では、Zoom SDK の操作については説明していません。問題は、async/await パターンを使用すると、スレッドセーフではないライブラリ (または SDK) の誤った動作につながる可能性があるということです。

SDK ラッパー メソッド:

SDK コールバック ハンドラ:

高レベルのコード: