2

system.dynamicを使用して、実行時にクラスの動的インスタンスを作成しようとしています。それをスレッドプールに渡して実行します。しかし、クラスのメソッドがプロパティとして使用されているというエラーが発生します。以下はコードです。

Type t = Type.GetType("clsCountrySelectInsertUpdate_TEST");
dynamic dd = Activator.CreateInstance(t, null);
dd.intMode = 203;
ThreadPool.QueueUserWorkItem(new WaitCallback(dd.CountrySelectInsertUpdate));

以下のようにスレッドプールのメソッドを呼び出そうとしましたが、戻り型voidをメソッドCountrySelectInsertUpdateから変換できないというエラーが発生しました。

ThreadPool.QueueUserWorkItem(new WaitCallback(dd.CountrySelectInsertUpdate()),null);

CountrySelectInsertUpdate()メソッドはパラメーターを受け取らず、voidを返します。

どんな助けでも大いにappericatedでしょう

4

1 に答える 1

0

WaitCallbackには状態が必要です。ラムダを使用してこれを簡単に書くことができます:

ThreadPool.QueueUserWorkItem(new WaitCallback(state => dd.CountrySelectInsertUpdate()), null);

そうは言っても、既に .NET 4 を使用しているので、代わりに TPL を使用することをお勧めします。ThreadPool.QueueUserWorkItem一般に、特に後で結果を取得する (または例外を処理する) 必要がある場合は、よりも優れたスレッド モデルを提供します。

Task.Factory.StartNew( () => dd.CountrySelectInsertUpdate());
于 2012-10-01T16:02:23.190 に答える