Greg D가 여기 에서 설명 하는 것과 유사한 SafeInvoke Control 확장 메서드가 있습니다 (IsHandleCreated 검사 제외).
나는 그것을 System.Windows.Forms.Form
다음과 같이 부르고있다 .
public void Show(string text) {
label.SafeInvoke(()=>label.Text = text);
this.Show();
this.Refresh();
}
때때로 (이 호출은 다양한 스레드에서 올 수 있음) 다음 오류가 발생합니다.
System.InvalidOperationException
발생
Message
= "창 핸들이 생성 될 때까지 컨트롤에서 Invoke 또는 BeginInvoke를 호출 할 수 없습니다."
Source
= "System.Windows.Forms"
StackTrace: at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at System.Windows.Forms.Control.Invoke(Delegate method) at DriverInterface2.UI.WinForms.Dialogs.FormExtensions.SafeInvoke[T](T control, Action`1 action) in C:\code\DriverInterface2\DriverInterface2.UI.WinForms\Dialogs\FormExtensions.cs:line 16
무슨 일이 일어나고 어떻게 해결합니까? 가끔 한 번 작동하고 다음 번에 실패 할 수 있기 때문에 양식 작성의 문제가 아닌만큼 알고 있습니다. 문제는 무엇일까요?
추신. 나는 정말 WinForms에 정말 끔찍합니다. 전체 모델과 그 작업 방법을 설명하는 좋은 기사 시리즈를 아는 사람이 있습니까?