C#怎样利用MSMQ发送和接收DataSet?高分请教各位高手!万分感谢!

xuxinqi 2005-05-05 05:22:20
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();

这样虽然说是把数据集发出去了,但是对方怎么接收呢??
...全文
110 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dxuesong 2005-05-12
#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
回复
SZY_JZM 2005-05-05
没有用过
回复
singlepine 2005-05-05
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
供参考
回复
coolksj 2005-05-05
没用过,帮你顶
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2005-05-05 05:22
社区公告

让您成为最强悍的C#开发者