我得到下面的異常在Windows窗體應用程序何時註冊將調用Form.Invoke到事件的方法?
System.InvalidOperationException:調用或BeginInvoke可直到窗口句柄已創建不能在一個控件調用。
發生異常的方法調用this.Invoke(System.Windows.Forms.Form.Invoke)。此方法在構造函數中註冊到另一個類的事件,這似乎會導致競爭條件和此異常。
public Form1()
{
InitializeComponent();
SomeOtherClass.Instance.MyEvent += new SomeDelegate(MyMethod);
}
private void MyMethod()
{
this.Invoke((MethodInvoker)delegate
{
// ... some code ...
}
}
表單生命週期的哪個階段是Handle創建的?在哪種形式的事件中,將該方法註冊到外國事件中是否安全?
它看起來像你不是在你的構造函數調用的InitializeComponent()。 – bitxwise 2011-04-12 10:32:09
有** HandleCreated **事件表單,您可能會檢查, – V4Vendetta 2011-04-12 10:51:55
@bitxwise,我在構造函數中首先調用InitializeComponent,我只是將它從代碼示例中簡單地刪除...我將再次添加它。 – Hinek 2011-04-12 11:38:24