2010-04-13 49 views
1

我寫在C#中的消息到消息隊列如下:無法找到自定義類對象適合格式化

ObjectMsg objMsg = new ObjMsg(1,"ascii",20090807); 
Message m = new Message(); 
m.Formatter = new BinaryMessageFormatter(); 
m.body = objMsg; 
queue.Send(m); 

我試圖如下閱讀的郵件:

Message m = new Message() 
m.Formatter = new BinaryMessageFormatter(); 
MessageQueue mq = new MessageQueue("./pqueue"); 

m = mq.Recieve(); 
ObjMsg msg = (ObjMsg)m.Body; 

但是,我收到一條錯誤消息:「找不到能夠閱讀此消息的格式化程序。」

+0

關於我的答覆,將不勝感激。 – Filburt 2010-04-22 21:38:02

回答

1

嘗試讀取消息的BodyStream這樣的:

Message m = new Message() 
m.Formatter = new BinaryMessageFormatter(); 
MessageQueue mq = new MessageQueue("./pqueue"); 

m = mq.Recieve(); 
StreamReader sr = new StreamReader(m.BodyStream); 
string messageBody = ""; 
while (sr.Peek() >= 0) 
{ 
    messageBody += sr.ReadLine(); 
} 
0

您也可以撥打StreamReader.ReadToEnd()一次,而不是不斷地追加到一個字符串。根據我的經驗,這通常更快。

System.Messaging.Message[] messages = messageQueue.GetAllMessages(); 

foreach (System.Messaging.Message message in messages) 
{ 
    System.IO.StreamReader sr = new System.IO.StreamReader(message.BodyStream); 
    Console.WriteLine(sr.ReadToEnd()); 
} 
相關問題