2017-06-29 3 views
0

を送りました。C#のMSMQは、私はこのように私自身のMSMQのラッパークラスを作成している

ボタンがクリックされたときに

まずアプリは、テキストメッセージを送信します。

private void btn_Click(object sender, EventArgs e) 
{   
    var queue = new MsgQueue.MsgQueue("GBMqueue"); 
    queue.SendMessage("some message text"); 
} 

第二のアプリはすべての着信メッセージをリッスンし、それを処理しようとしている:

// declaration 
private MsgQueue queue; 

// preparation of the queue 
private void Form1_Load(object sender, EventArgs e) 
{ 
    queue = new MsgQueue.MsgQueue("GBMqueue"); 
    queue.NewMessageAvailable += Queue_NewMessageAvailable; 
} 

// Handler for the incoming messages 
private void Queue_NewMessageAvailable(string message) 
{ 
    // Hits here very rarely!!! 
} 

問題は、私ができることですApp1から何回かメッセージを送信しますが、Queue_NewMessageAvailableハンドラは最初のメッセージではなくランダムに1つのメッセージのみをキャッチします。

例外はスローされず、受信メッセージを捕捉しません。

私はここで間違っていますか?

+1

私は最初のアプリケーションは新しいメッセージを聞いてはいけないと思います。 2番目のアプリケーションからメッセージが取り除かれる可能性があります。それはメッセージを送信すべきです。 – Sven

+0

@Sven、SenderとReceiverに分割すると、間違いなく期待どおりに動作します:)ヒントありがとう。 – pitersmx

+0

よろしくお願いします。私はこれを答えとして掲示します。 – Sven

答えて

1

私は最初のアプリケーションは新しいメッセージを聞いてはいけないと思う。 2番目のアプリケーションのメッセージが削除される可能性があります。それはメッセージを送信すべきです。

機能を分割するとうまくいくはずです。

関連する問題