2011-05-11 14 views
0

私はWindowsのSVCでホストされているWCFサービスを持っています。 winformsアプリケーションから通常の方法で実行し、チャンネルなどを作り、メソッドを呼び出します。サーバー側に.svcファイルはありません。UIをブロックせずにWindows svcで自己ホストWCFサービスを呼び出す

しかし、guiからWindowsサービスのメソッドを呼び出すと、UIがブロックされます。 UIをブロックせずにこれを行う方法はありますか?

おかげ

+0

GUIを持っているクライアントアプリケーションがあり、そのUIでホストされているWCFサービスを呼び出していますか? – aceinthehole

+0

WindowsサービスでWCFサービスがホストされていません。申し訳ありませんが、私の投稿が少し不明であることに気がついたので、今私はそれを明らかにしました。 – dotnetdev

+0

UIの別のスレッドからWCFサービスを呼び出していますか? – aceinthehole

答えて

0

BackgroundWorkerクラスか、新しいタスク並列ライブラリのいずれかを調べてください。あなたが望むのは、サービスへの呼び出しを中止し、回答が受信されたときに何をすべきかを記述し、答えを待っている間UIをブロックしないことです。場合によっては、検索ダイアログのように、回答を待つ間に、UIのために何もない場合があります。です。答えが返ってくるまでは、UIができることはほかにありません。しかし、バックグラウンドで検索を実行すると、UI スレッドが解放されたことになります。つまり、ウィンドウを移動したりサイズを変更したり、同じアプリケーションの別のフォームに切り替えることができます。これは、バックグラウンドでコールを実行するのに十分な理由です。

0

なぜあなたは非同期メソッドを使用していませんか? IDEによって生成される各メソッドには、Asyncサフィックスを持つ別のメソッドがあります。これにより、Webサービスを非同期的に呼び出すことができます。

+0

それは簡単ですか?私はこれを見ましたが、.svcファイルが必要なようです。 – dotnetdev

+0

どのように今サービスに電話していますか?ネットワーク経由でのプロセスですか?どのようなバインディングですか? HTTP? netTcp?等? –

+0

名前付きパイプ(同じマシン上の2つのプロセス)。とにかく、私は非同期的なやり方をしていますが、これまでのところ動作しますが、いくつかの変更が必要です。 – dotnetdev

関連する問題