2014-04-15 3 views
0

'System.Delegate'에서 '방법 그룹'에서 변환 할 수 없습니다 던졌습니다, 그래서 여기 내 코드입니다 :this.Invoke 내가 그것을 설명하는 방법을 모른다

this.Invoke(listBox1.Items.Add, new Object[] { e.Data.ToString() }); 

그러나, 모든 것이 괜찮을 것,

오류 1

System.Windows.Forms.Control.Invoke (System.Delegate, PARAMS '에 가장 적합한 오버로드 된 메서드 : 나는 오류를 가지고 있지만하지 않을 경우 슬프게도 나는이 오류가 object []) '에 잘못된 인수가 있습니다.

오류 2

인수 한 님의 '방법 그룹'에서 변환 할 수 없습니다 'System.Delegate'

나는이 예외를 극복하기 위해 어떻게해야합니까?

+1

당신이 당신의 호출에 대해 별도의 방법이 있어야합니다. –

답변

8

Invoke대리인을 첫 번째 매개 변수로 사용해야합니다. ListBox.Items.Add메서드이며 대리인이 아닙니다.

당신은, 그러나, 이것을 사용할 수 있습니다 :

this.Invoke((Action)delegate() 
{ 
    listBox1.Items.Add(e.Data.ToString()); 
}); 
+0

사실 여기에 익명 메소드가 필요하지 않습니다. (아무 것도 추가하지 않아도됩니다); 적절한 대의원에게 던지기 만하면됩니다. – Servy

5

는 작업 할 대리자를 설정합니다.

Invoke(new Action(() => 
{ 
    // Do it 
})); 
-1

당신은 테 제어 요구를 호출 할 경우 그래서를 호출 할 경우, 확인 타자 :

if(listBox1.InvokeRequired) 
    listBox1.Invoke((Action)(()=> listBox1.Items.Add(e.Data.ToString())); //if e.Data is the object to add it to listBox! 
+0

아마 그는 이미 호출해야한다는 것을 이미 알고 있으므로 프로그래밍 방식으로 확인할 필요가 없습니다. 이것은 또한 컴파일 시간 오류를 전혀 해결하지 못합니다. – Servy

+0

Servy가 맞습니다. Invoke가 필요하다는 것을 이미 알고 있습니다. :) – Mibac