2013-04-18 62 views
3

好吧,我有一個C#表格與幾個類。在其中一個類中,我運行一個線程來檢查外部程序是否正在運行。當外部程序沒有運行時,我想讓我的程序關閉。C#關閉程序/線程形式

我是一個新手,所以對我來說,明顯的答案是使用form.Close()。但我不確定是否可以從子類或甚至不同的線程訪問此函數!

所以我的問題是:(如何)是否有可能從其他類中的另一個線程關閉窗體?更重要的是這種最佳做法?

+2

檢查此:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/2cb9cd98-b638-4378-9349-fbb6598e5092/ –

回答

2

您可以使用Control.InvokeRequiredControl.BeginInvoke()以調用UI線程上的方法。

例如(此方法必須是形式類本身的內部):

public void CloseForm() 
{ 
    if (this.InvokeRequired) 
    { 
     this.BeginInvoke(new Action(this.Close)); 
    } 
    else 
    { 
     this.Close(); 
    } 
} 

這是安全的從另一個線程中調用。

+0

感謝您的快速響應! – Jordy