Tôi có phương pháp mở rộng SafeInvoke Control tương tự như phương pháp mà Greg D thảo luận ở đây (trừ kiểm tra IsHandleCreate).
Tôi đang gọi nó từ một System.Windows.Forms.Form
như sau:
public void Show(string text) {
label.SafeInvoke(()=>label.Text = text);
this.Show();
this.Refresh();
}
Đôi khi (cuộc gọi này có thể đến từ nhiều chuỗi khác nhau), điều này dẫn đến lỗi sau:
System.InvalidOperationException
xảy ra
Message
= "Không thể gọi hoặc BeginInvoke trên một điều khiển cho đến khi tay cầm cửa sổ được tạo."
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
Điều gì đang xảy ra và làm thế nào để tôi sửa chữa nó? Tôi biết rất nhiều vì nó không phải là vấn đề của việc tạo biểu mẫu, vì đôi khi nó sẽ hoạt động một lần và thất bại vào lần tiếp theo, vậy vấn đề có thể là gì?
Tái bút. Tôi thực sự rất tệ ở WinForms, có ai biết một loạt bài viết giải thích toàn bộ mô hình và cách làm việc với nó không?