私はC#でActiveMQを使用している初心者です。私は1つのボタンと1つのラベルで簡単なウィンドウフォームを作成しました。ボタンをクリックすると、キューにメッセージが送信され、ラベルは、送信したばかりのメッセージで初期化されます。もちろん、ラベルを直接初期化することはできますが、私のラベルを更新するために、フォームからキューからメッセージを消費するようにしてください。ActiveMQとCで送信したばかりのメッセージを処理してください
問題は、私のラベルを更新するために同じ形式でメッセージを処理できないということです。私のコンシューマーコードは全く呼び出されていませんが、私のフォームのLoadイベントで初期化されています。私は私のWindowsフォームを閉じて再起動した場合 は、ここでは、コード
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
InitializeHandlerAMQ();
}
private void InitializeHandlerAMQ()
{
Tchat tchat = null;
IDestination dest = _session.GetQueue(QUEUE_DESTINATION);
using(IMessageConsumer consumer = _session.CreateConsumer(dest))
{
IMessage message;
while((message = consumer.Receive(TimeSpan.FromMilliseconds(2000))) != null)
{
var objectMessage = message as IObjectMessage;
if(objectMessage != null)
{
tchat = objectMessage.Body as Tchat;
if (tchat != null)
{
textBox2.Text += string.Format("{0}{1}", tchat.Message, Environment.NewLine);
}
}
}
}
}
だ、そして私のラベルがうまく更新されますが、私はそれを閉じて再度開く必要はありません。
アイデアはありますか?
別のリソース:「ActiveMQ in .NET(サンプルチャットアプリケーション)」https://code.msdn.microsoft.com/windowsapps/ActiveMQ-in-NET-Sample-9406441a –