1
更新所以,我有一個非常簡單的WCF客戶端 - 服務器應用程序。問題是,該服務從客戶端獲取消息,並且它還接收待處理的消息請求。但是,它不會將消息返回給客戶端。相反,它顯示了該部分: 未決的消息不包含鍵{ID}雖然ID是罰款字典是不是在WCF服務
private Dictionary<int, List<Message>> pendingMessages =
new Dictionary<int, List<Message>>();
public IEnumerable<Message> GetMessages(int id)
{
Console.WriteLine($"New request from {id}");
List<Message> messages;
if (!pendingMessages.ContainsKey(id))
{
Console.WriteLine($"Pending messages does not contain key {id} ");
return null;
}
messages = pendingMessages[id].ToList();
pendingMessages[id].Clear();
foreach (var msg in messages)
{
Console.WriteLine($"Returned message: ${msg.From}=>{msg.To}:{msg.Body}");
}
return messages;
}
public void SendMessage(Message msg)
{
if (!pendingMessages.ContainsKey(msg.To))
{
pendingMessages.Add(msg.To,new List<Message>());
}
pendingMessages[msg.To].Add(msg);
Console.WriteLine($"{msg.From}=>{msg.To}: {msg.Body}");
}
也許實例接收到「的SendMessage」請求是從實例接收到「的getMessages」請求不同?這樣說:如果這被證明是Dictionary中的一個bug,我會感到驚訝。 (話雖如此,你似乎在沒有任何同步的情況下使用它,並且請求可能會進入任何線程...考慮ConcurrentDictionary,或者添加鎖定。) –
pendingMessages是如何定義的? – DoctorMick
何處/如何定義pendingMessages? – ChrisF