2010-04-24 8 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) 
{ 
    ... 
} 

ReceiveMessageAction의 두 변수를 각각 Dictionary<int, List<string>>ReceivesMessagesStatus 방법으로 보낼 수 있습니까?

감사합니다.


나는 스레드에서 실행되는 기능을 가지고 있습니다. 여기에 Dictionary <int, List <string>> 유형의 객체를 만들고이 객체를 내 양식에서 사용하려는 위임을 사용합니다.

코드의 일부는 위입니다 :의 [1] Decraration [2] 목적 [3] 대리자의 호출이 [3] 객체가 될 필요가있는 기능을

을 보내 위임
+0

조금 더 자세히 설명해 주시겠습니까? – James

답변

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 : 왜 안되니? 아마도'value as (Dictionary >) '일까요? – abatishchev

+1

@Emanuel : 사전을 객체로 형변환 할 수 있습니다 ... – James

2

:

Invoke(new MethodInvoker(
    () => ReceivesMessagesStatus(ReceiveMessageAction.Notification, messagesForNotification) 
)); 
관련 문제