ワーカー スレッドをブロックすることなく、複数のワーカーから呼び出すことができるスレッド セーフなメソッドを作成したいと考えています。また、InvokeRequired->BeginInvoke タイプ コードが UI コントロール用であるのと同じように、コードを適切に簡潔にしたいと考えています... もちろんControl
、この場合は a を使用していません。メソッドはカスタム クラスにあります。また、必ずしもすべてのメソッドでこれが必要なわけではありません。それで、これはカスタムクラス/メソッドで簡単に実装できるものですか?
須藤コード:
class foo
{
//Fields
Context MyContext;
List<T> UnsafeList = new List<T>();
//Method
public void MyMethod(int someArg, Item someOtherArg)
{
if (!MyContext)
{
MyContext.BeginInvoke(...);
return; //Calling thread returns
}
else
{
UnsafeList.Add(someOtherArg);
return; //MyContext Thread returns
}
}
//Constructor
public foo()
{
MyContext = new GetSomeThreadHandle();
}
}
カスタム EventArgs を使用してこれを行う方法については考えがあると思いますが、それにはほぼ反復的なコードが含まれており、より一般的でクリーンなソリューションを探していました。
編集
これはC#.Net 4.0を使用しています