2010-04-24 70 views
0

代码:如何使用代表在C#字典<INT,列表<string>>

[1]

private delegate void ThreadStatusCallback(ReceiveMessageAction action, 
     Dictionary<int, List<string>> message); 

[2]

Dictionary<int, List<string>> messagesForNotification = 
     new Dictionary<int, List<string>>(); 

[3]

Invoke(new ThreadStatusCallback(ReceivesMessagesStatus), 
    ReceiveMessageAction.Notification , messagesForNotification); 

[4]

private void ReceivesMessagesStatus(ReceiveMessageAction action, object value) 
{ 
    ... 
} 

如何发送分别Dictionary<int, List<string>>ReceivesMessagesStatus方法ReceiveMessageAction类型的两个变量。

谢谢。


我有一个是在一个线程中执行的功能。在这里,我创建了一个类型为Dictionary <int, List <string>>的对象,并使用一个代表我想在我的表单中使用此对象。

代码的一部分上面是:的 [1] Decraration委派 [2]对象 [3]代表的呼叫 [3]的函数当对象需要被发送

+0

你能否详细说一下? – James 2010-04-24 09:09:23

回答

1

解决方案:

[1]

Invoke(new ThreadStatusCallback(ReceivesMessagesStatus), new object[] { ReceiveMessageAction.Notification, messagesForNotification }); 

[2]

private void ReceivesMessagesStatus(ReceiveMessageAction action, Dictionary<int, List<string>> value) 
{ 
    ... 
} 
1

你有没有尝试铸造价值作为一个字典?例如

private void ReceiveMessagesStatus(ReceieveMessageAction action, object value) 
{ 
    var myDictionary = (Dictionary<int, List<string>>)value; 
    ... 
} 
+1

@Emanuel:为什么不呢?也许'值作为(Dictionary >)'? – abatishchev 2010-04-24 09:57:09

+1

@Emanuel:词典可以作为一个对象... – James 2010-04-24 10:24:56

2

你可以做到这一点类型安全不使用拉姆达铸造:

Invoke(new MethodInvoker(
    () => ReceivesMessagesStatus(ReceiveMessageAction.Notification, messagesForNotification) 
)); 
相关问题