0

プログラムをテストするために WCF を使用しようとしています。私が直面している問題は、WCF を介してメソッドを呼び出すときに、ワーカー スレッドで実行されることです。テストしようとしているメソッドは、UI スレッドで実行する必要があります。そうしないと、次のエラーが発生します。

DragDrop の登録に失敗しました。OLE 呼び出しを行う前に、現在のスレッドをシングル スレッド アパートメント STA モードに設定する必要があります。メイン関数に STAThreadAttribute がマークされていることを確認してください。

私のプログラムのメイン関数には STAThread 属性があります。メソッド内で次のことを行うことで、それを機能させることができました。

public void MyMethod(){
if (InvokeRequired) {
   Invoke(new MethodInvoker(MyMethod));
   return;
   }
   //Do stuff
}

プログラム内のすべてのメソッドに対してこの変更を行う必要はありません。毎回 UI スレッドでメソッドを実行するように WCF を取得する方法はありますか?

4

1 に答える 1

1

毎回 UI スレッドでメソッドを実行するように WCF を取得する方法はありますか?

いいえ。WCF を SingleThreaded として実行するように構成しても、サーバー スレッドのままです。

于 2013-10-11T21:13:19.963 に答える