3
好吧,我有一個C#表格與幾個類。在其中一個類中,我運行一個線程來檢查外部程序是否正在運行。當外部程序沒有運行時,我想讓我的程序關閉。C#關閉程序/線程形式
我是一個新手,所以對我來說,明顯的答案是使用form.Close()。但我不確定是否可以從子類或甚至不同的線程訪問此函數!
所以我的問題是:(如何)是否有可能從其他類中的另一個線程關閉窗體?更重要的是這種最佳做法?
好吧,我有一個C#表格與幾個類。在其中一個類中,我運行一個線程來檢查外部程序是否正在運行。當外部程序沒有運行時,我想讓我的程序關閉。C#關閉程序/線程形式
我是一個新手,所以對我來說,明顯的答案是使用form.Close()。但我不確定是否可以從子類或甚至不同的線程訪問此函數!
所以我的問題是:(如何)是否有可能從其他類中的另一個線程關閉窗體?更重要的是這種最佳做法?
您可以使用Control.InvokeRequired
和Control.BeginInvoke()
以調用UI線程上的方法。
例如(此方法必須是形式類本身的內部):
public void CloseForm()
{
if (this.InvokeRequired)
{
this.BeginInvoke(new Action(this.Close));
}
else
{
this.Close();
}
}
這是安全的從另一個線程中調用。
感謝您的快速響應! – Jordy
檢查此:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/2cb9cd98-b638-4378-9349-fbb6598e5092/ –