2010-04-24 68 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) 
)); 
相關問題