私はWindowsのSVCでホストされているWCFサービスを持っています。 winformsアプリケーションから通常の方法で実行し、チャンネルなどを作り、メソッドを呼び出します。サーバー側に.svcファイルはありません。UIをブロックせずにWindows svcで自己ホストWCFサービスを呼び出す
しかし、guiからWindowsサービスのメソッドを呼び出すと、UIがブロックされます。 UIをブロックせずにこれを行う方法はありますか?
おかげ
私はWindowsのSVCでホストされているWCFサービスを持っています。 winformsアプリケーションから通常の方法で実行し、チャンネルなどを作り、メソッドを呼び出します。サーバー側に.svcファイルはありません。UIをブロックせずにWindows svcで自己ホストWCFサービスを呼び出す
しかし、guiからWindowsサービスのメソッドを呼び出すと、UIがブロックされます。 UIをブロックせずにこれを行う方法はありますか?
おかげ
BackgroundWorkerクラスか、新しいタスク並列ライブラリのいずれかを調べてください。あなたが望むのは、サービスへの呼び出しを中止し、回答が受信されたときに何をすべきかを記述し、答えを待っている間UIをブロックしないことです。場合によっては、検索ダイアログのように、回答を待つ間に、UIのために何もない場合があります。はです。答えが返ってくるまでは、UIができることはほかにありません。しかし、バックグラウンドで検索を実行すると、UI スレッドが解放されたことになります。つまり、ウィンドウを移動したりサイズを変更したり、同じアプリケーションの別のフォームに切り替えることができます。これは、バックグラウンドでコールを実行するのに十分な理由です。
なぜあなたは非同期メソッドを使用していませんか? IDEによって生成される各メソッドには、Asyncサフィックスを持つ別のメソッドがあります。これにより、Webサービスを非同期的に呼び出すことができます。
GUIを持っているクライアントアプリケーションがあり、そのUIでホストされているWCFサービスを呼び出していますか? – aceinthehole
WindowsサービスでWCFサービスがホストされていません。申し訳ありませんが、私の投稿が少し不明であることに気がついたので、今私はそれを明らかにしました。 – dotnetdev
UIの別のスレッドからWCFサービスを呼び出していますか? – aceinthehole