MSMQueue からメッセージを読み取る Windows サービスを作成しましたが、これを並行して行う必要があります (2 つのスレッドが同時にメッセージを読み取る必要があります)。どうやってやるの?これが私のコードです(ほとんど本による):
public partial class MyNewService : ServiceBase
{
System.Messaging.MessageQueue mq;
System.Messaging.Message mes;
public MyNewService()
{
InitializeComponent();
if (MessageQueue.Exists("MyServer\\MyQueue"))
mq = new System.Messaging.MessageQueue("MyServer\\MyQueue");
mq.ReceiveCompleted += new ReceiveCompletedEventHandler(MyReceiveCompleted);
mq.BeginReceive();
}
private static void MyReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
{
try
{
MessageQueue mq = (MessageQueue)source;
Message m = mq.EndReceive(asyncResult.AsyncResult);
// TODO: Process the m message here
// Restart the asynchronous receive operation.
mq.BeginReceive();
}
catch(MessageQueueException)
{
// Handle sources of MessageQueueException.
}
return;
}
}
そして、これは私の主な機能です:
static class Program
{
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new MyNewService()
};
ServiceBase.Run(ServicesToRun);
}
}