2

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);
    }
  }
4

2 に答える 2