1

N個の計算機オブジェクトの1つのサービスを使用してその仕事をする必要があるクラスメソッドAがあります。

愚かで幸せな状態を保つために、どの計算機を使用する必要があるかを判断するように依頼するつもりはありません。いくつかのより高いレベルのコードは、どの計算機Aが使用されるべきかを判断し、それをAに注入します。

私が直面している問題は、これらの計算機のいくつかは非TAP(同期コード)の塊であり、他の計算機は「非同期」(TAP)とマークされたメソッドであるということです

TAP計算機と非TAP計算機の両方でAを注入する方法がわかりません。IE、TAP計算機の場合は「待機」する必要があるようですが、非TAP計算機の場合は実行しません。

この問題に取り組む方法がわかりませんか?ありがとう

4

1 に答える 1

1

一般に、非同期モデルに移行しようとしている場合は、同期メソッドをにラップして非同期にすることをお勧めTask<T>します。その後、どこでも非同期呼び出しを使用できます。

IE、TAP計算機の場合は「待機」する必要があるようですが、非TAP計算機の場合は実行しません。

これがどのように実装されているかは実際には問題ではありません。「非TAP」計算機はを返しT、「TAP」計算機はを返しTask<T>ます。これが実際の唯一の違いです。メソッドがTaskまたはを返す場合Task<T>は、を使用することをお勧めしますawait。そうでない場合は、値を使用するか、値をラップしてTaskEx.Run(非同期にする)、を使用できるようにしますawait

于 2012-09-04T17:14:44.883 に答える