2011-10-18 7 views
1

誰も私の問題を解決できますか?MSMQトリガーを実装する方法

MSMQキューにデータが挿入されたときにイベントを発生させたいのですがどうすればいいですか?

+1

MSMQトリガサービスを使用していないのはなぜですか? –

答えて

4

あなたは、メッセージキューのインスタンスを作成して、非同期的に覗き開始:

MessageQueue queue = new MessageQueue(@".\PRIVATE$\Queue"); 
queue.BeginPeek(TimeSpan.Infinite, null, OnMessageAdded); 

メッセージがキューに追加したときに登録したコールバックが呼び出されます。限り、あなたの本当の問題が何であるかを説明しなかったとして、私はあなたがキューに追加された新しいメッセージについて情報を取得したいと仮定します。

private void OnMessageAdded(IAsyncResult ar) 
{ 
    Message peekedMessage = queue.EndPeek(ar); 
    //Do whatever you want. Raise a new event, process the message, ... 
} 

メッセージがキューから取り出されていません。メッセージは使用できますが、依然としてキューに残ります。メッセージが不要な場合は、結果を使用せずにqueue.EndPeek(ar);に電話するだけです。

+0

助けてくれてありがとう..もし私が間違っていないとMSMQから受信した後に呼び出された関数..何かがMSMQに挿入されたときに関数を呼び出す。 –

+0

申し訳ありませんが、BeginPeekとEndPeekを使用してください。私は答えを訂正します。 – PVitt

+0

いくつか注意してください: 'TimeSpan.Infinite'は新しい.NETバージョンには存在しませんが、' BeginPeek'メソッドは無限タイムアウトでは機能しません。最大値は50日です。 – Peroxy

関連する問題