問題タブ [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.
c# - TaskCompletionSource のパフォーマンスが遅い
同期メソッドで TaskCompletionSource の複数のインスタンスをループすると、5 つを超えるプログラムの実行が遅くなりますが、非同期メソッドではこの問題はありません。
これは問題のあるコードです 同期方式を使用すると、実行が遅くなり、約 1 秒で 1 つ作成されます
これは問題のないコードです,非常に高速に実行します
c# - TaskCompletionSource のコレクションを形成する方法型安全性を保つ
私はいくつかの非同期メソッドを持っています:
上記は、簡単にするための半疑似コードです。私は次のようにメソッドの1つを呼び出します:
A a = await service.GetAAsync();
ここでの問題はTaskCompletionSource<T>
一般的なことです。このように 100 個のメソッドがある場合、戻り値の型ごとに変数を作成する必要があります。ただし、一度に呼び出すことができるメソッドは1 つだけTaskCompletionSource
なので、 にタイプせずに単一のを使用すると便利ですobject (TaskCompletionSource<object>)
。
私はしたくない:
object a = await service.GetAAsync();
クライアントによるキャストが必要になるためです。したがって、最善の解決策は、単一の を使用することですが、TaskCompletionSource
何らかの方法で入力することです。または、代わりに の Dictionary を持つこともできTaskCompletionSource
ます。どちらも私には不可能に思えます。
これをどのように解決すればよいですか?
アップデート:
私の状況の背景については、次をご覧ください。 切断されたシナリオで同期コードを非同期待機にラップする