2016年2月20日土曜日

Windowsでプロセス間通信4(メッセージキュー)

プロセス間通信をメッセージキューで行う場合のひな型

 送信側
using System;
using System.Messaging;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;

public class QueueSend
{
  const string QUEUE_NAME = ".\\Private$\\TEST";

  public static void Main(string[] args)
  {
    MessageQueue queue;

    //メッセージキューがある場合はNewする
    //ない場合は、作成する
    if(MessageQueue.Exists(QUEUE_NAME))
       {
         queue = new MessageQueue(QUEUE_NAME);
       }
    else
      {
         queue = MessageQueue.Create(QUEUE_NAME);
      }

    BinaryMessageFormatter bf = new BinaryMessageFormatter();
    Message msg;
    while(true)
      {
        DateTime d = DateTime.Now;
        //メッセージをフォーマットして送信する
        msg = new Message(d,bf);
        queue.Send(msg);
        Thread.Sleep(1000);
        
      }
  }
  
}

 受信側
using System;
using System.Messaging;
using System.Threading;

public class QueueRecv
{
  const string QUEUE_NAME = ".\\Private$\\Test";

  public static void Main(string[] args)
  {
    MessageQueue queue;
    //メッセージキューがある場合はNewする
    //ない場合は、作成する
    if(MessageQueue.Exists(QUEUE_NAME))
      {
        queue = new MessageQueue(QUEUE_NAME);
      }
    else
      {
        queue = MessageQueue.Create(QUEUE_NAME);
      }
    //フォーマッタを指定
    queue.Formatter = new BinaryMessageFormatter();
    Message msg;
    DateTime d;
    while(true)
      {
        //メッセージを受信
        msg = queue.Receive();
        //受信したメッセージを型変換
        d = (DateTime)msg.Body;
        Console.WriteLine(d.ToString());
      }
  }
  
}

0 件のコメント:

コメントを投稿