2012-04-14 9 views
2

私は今WCFサービスの新しいメソッドを使用することができます.WCFサービスのメソッドを使用することができます。返す値はいくつかありますが、バックグラウンドワーカーを使用していて、 "Job Completeそれが終わった後のクライアントに、どうすればいいのですか?
AutoResetEventを使用して完了するまで、backgroundworkerを待機する必要がありますresetEvent.Set()メインスレッドのメソッドでメッセージを返すようにするには?
スレッドがビジー状態にならないようにするには、クライアントから要求された他のコマンドの準備が必要です。どのようなアイデアですか?WCFサービスがそのメソッドをサービスから呼び出さずにクライアントにメッセージを送信させる方法

+1

[Duplex Services](http://msdn.microsoft.com/en-us/library/ms731064.aspx)を参照してください。または、サービスバスのようなものをチェックアウトする必要があります。クライアントがバスにリクエストを預けて、サービスはそれを後で処理し、バス上に別のメッセージを返信して完了を知らせます。 –

+0

@marc_s私はnetTcpBindingを使用していますが、私はそれを変更する必要がありますか? –

+0

はい - デュプレックスは特定のバインディングでのみ機能します。 'WSDualHttpBinding' –

答えて

1

私はよく、私はメソッドを呼び出すことなくサービスから戻ってメッセージを送信できませんでした、それを考え出したが、私はConcurrencyMode = ConcurrencyMode.MultipleConcurrencyMode = ConcurrencyMode.Singleからサービス動作の属性を変更したとき、それは、マルチスレッドに行って、その結果:
方法この属性のために新しいスレッドで実行され、そのスレッドが動作している間に他の要求を送信することができます。終了すると、メッセージ/結果が返されます。

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerSession)] 
public class FileManagerService : IFileManager 
関連する問題