System.Messaging.MessageQueueTransaction objtran=new MessageQueueTransaction();
System.Messaging.Message objMsg=new System.Messaging.Message();

objtran.Begin();
objMsg.Label="0200011111";
objMsg.Body=ds; System.Messaging.MessageQueue objque=new System.Messaging.MessageQueue("FormatName:DIRECT=TCP:172..0.0.1\\private$\\222send");
objque.Send(objMsg,objtran);
objtran.Commit();这样虽然说是把数据集发出去了,但是对方怎么接收呢??

解决方案 »

  1.   

    http://www.c-sharpcorner.com/2/MessageQueueTut1.asp
    http://search.csdn.net/Expert/topic/547/547529.xml?temp=4.513186E-02
    http://search.csdn.net/Expert/topic/1118/1118013.xml?temp=.5077783
    供参考
      

  2.   

    #region Class Cls_MessageMG
    /// <summary>
    /// This Class is used read and write message from MessageQueue
    /// </summary>
    public class Cls_MessageMG
    {
    public static void clear_message(string Queue_Path)
    {
    Queue_Path=@".\Private$\"+Queue_Path;
    if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    }
    MessageQueue mq=new MessageQueue(Queue_Path);
    mq.Purge();
    }public static void send_message(string Queue_Path, string Msg_Content, Msg_Type Msg_Type_Instance)
    {
    Queue_Path=@".\Private$\"+Queue_Path;
    if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    }
    MessageQueue mq=new MessageQueue(Queue_Path);
    mq.Label=System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ffff");
    switch (Msg_Type_Instance)
    {
    case Msg_Type.XML:
    mq.Formatter=new XmlMessageFormatter();
    break;
    case Msg_Type.Binary:
    mq.Formatter=new BinaryMessageFormatter();
    break;
    case Msg_Type.ActiveX:
    mq.Formatter=new ActiveXMessageFormatter();
    break;
    }
    mq.Send(Msg_Content);
    }public static string receive_message(string Queue_Path)
    {
    Queue_Path=@".\Private$\"+Queue_Path;
    if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    return "";
    }MessageQueue mq= new MessageQueue(Queue_Path);
    mq.Label=System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ffff");
    ((XmlMessageFormatter)mq.Formatter).TargetTypeNames=new string[]{"System.String,mscorlib"};try
    {
    System.Messaging.Message m = mq.Receive();
    return (string)m.Body;
    }
    catch (Exception ex)
    {
    return (ex.ToString());
    }
    }public static string peek_message(string Queue_Path)
    {
    Queue_Path=@".\Private$\"+Queue_Path;
    if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    return "";
    }MessageQueue mq= new MessageQueue(Queue_Path);
    mq.Label=System.DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss:ffff");
    ((XmlMessageFormatter)mq.Formatter).TargetTypeNames=new string[]{"System.String,mscorlib"};try
    {
    System.Messaging.Message m = mq.Peek();
    return (string)m.Body;
    }
    catch (Exception ex)
    {
    return (ex.ToString());
    }
    }public static bool IsQueueEmpty(string Queue_Path)
    {
    Queue_Path=@".\Private$\"+Queue_Path;
    bool isQueueEmpty = false;if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    return true;
    }// Connect to a queue.
    MessageQueue myQueue = new MessageQueue(Queue_Path);try
    {
    // Set Peek to return immediately.
    myQueue.Peek(new TimeSpan(0));// If an IOTimeout was not thrown, there is a message 
    // in the queue.
    isQueueEmpty = false;
    }catch(MessageQueueException ex)
    {
    if (ex.MessageQueueErrorCode == 
    MessageQueueErrorCode.IOTimeout)
    {
    // No message was in the queue.
    isQueueEmpty = true;
    }// Handle other sources of MessageQueueException.
    }// Handle other exceptions as necessary.// Return true if there are no messages in the queue.
    return isQueueEmpty;
    }
    public static int GetQueueCount(string Queue_Path)
    {
    Queue_Path=@".\Private$\"+Queue_Path;if (!MessageQueue.Exists(Queue_Path))
    {
    MessageQueue.Create(Queue_Path);
    return 0;
    }MessageQueue myQueue = new MessageQueue(Queue_Path);
    MessageEnumerator myEnumerator = myQueue.GetMessageEnumerator();int message_count=0;while (myEnumerator.MoveNext())
    {
    message_count++;
    }
    return message_count;
    }}
    #endregion