我目前有一個啓動中央邏輯類(使用其他一些.dll來檢查硬件或連接到數據庫)的項目。之後,一個WPF表單被啓動。這種形式使用中央邏輯的信息。線程或線程池中的不同實例?
目前,該應用程序正在啓動這樣的:
public void StartTheWholeBunch()
{
Thread thread = new Thread(() =>
{
applicationLogic = new ApplicationLogic();
Application app = new Application();
app.Run(new MainWindow(applicationLogic));
});
thread.IsBackground = true;
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
}
的主窗口是我想用兩個WPF應用程序之一。所以第二個人會加入後期的樂趣。
當前設置正在工作。一切都是相互溝通的,而且這裏沒有問題。我只是想知道是否使用這個Thread
是正確的。當我離開線程applicationLogic = new ApplicationLogic();
時,事情肯定會出錯(例如創建MessageBox彈出窗口,整個應用程序將在此凍結)。
我應該把所有東西放在一個線程中嗎?或者更好的做法是將所有東西分開或創建一個Threadpool?我怎樣才能以最好的方式來解決問題?
提示:如果你啓動一個線程,並立即加入它,它幾乎可以肯定你並不需要一個單獨的線程。線程的關鍵點是能夠(至少在概念上)一次完成兩件獨立的事情,而當你等待'Join()'返回時,你有點失敗。 – cHao
@cHao應用程序邏輯應該運行不確定。我想這意味着我應該保留在這個線程中。我使用'Join',因爲它會以某種方式關閉,否則...... – Joetjah
它可能會被關閉,因爲後臺線程不會讓程序保持活動狀態。 (我甚至沒有意識到你可以'加入()'它們,但是呃)。只要任何*非*背景線程正在運行,應用程序就會一直存在。 – cHao