我遇到了Windows窗體應用程序的問題。Windows窗體中我的跨線程調用有什麼問題?
表單必須從另一個線程顯示。因此,在窗體類,我有以下代碼:
private delegate void DisplayDialogCallback();
public void DisplayDialog()
{
if (this.InvokeRequired)
{
this.Invoke(new DisplayDialogCallback(DisplayDialog));
}
else
{
this.ShowDialog();
}
}
現在,我每次運行這個時候,一個InvalidOperationException
被拋出就行this.ShowDialog();
:
「跨線程操作無效:控制'SampleForm'從一個線程訪問,而不是它創建的線程。「
這段代碼有什麼問題?這不是一個有效的方式來進行跨線程調用嗎? ShowDialog()
有什麼特別的嗎?
出於好奇另一種方法,是什麼IsHandleCreated節目? – 2010-06-15 14:48:18
@Marc Gravell:IsHandleCreated爲false。所以自然而然地,正如幾個人所說,代碼在表單顯示之前執行。 – 2010-06-15 16:19:13