이 링크의 코드에서 http://c-sharp-programming.blogspot.com/2008/07/cross-thread-operation-not-valid.html은 대리자를 사용하여 텍스트 상자의 값을 작업자 스레드에서 업데이트합니다.대리자 호출 구문 설명 C#
기본적으로 내가 무슨 일이 일어나고 있는지 볼 수 있지만, 특히이 라인의 구문 수 있습니다
label1.Invoke(del, new object[] { newText });
나에게 혼란이다. 누군가 설명해 주시겠습니까? 매개 변수가 하나 뿐인데 왜 대리자에 새 개체 배열 구문을 사용합니까?
전체 코드 :
delegate void updateLabelTextDelegate(string newText);
private void updateLabelText(string newText)
{
if (label1.InvokeRequired)
{
// this is worker thread
updateLabelTextDelegate del = new updateLabelTextDelegate(updateLabelText);
label1.Invoke(del, new object[] { newText });
}
else
{
// this is UI thread
label1.Text = newText;
}
}
실수로, label1.Invoke()가 대리자가 아닙니다. 그냥'label1.Invoke (del, newText);라고 쓰십시오. –
그는 label1.Invoke()가 델리게이트라고 말 했나요? 나는 그것을 읽지 않았다. 또한 params 덕분에 명시 적 객체 []가 없어도 하나의 param을 사용할 수 있습니다. – payo