2011-07-16 41 views
2

我可能需要一些技巧,因爲我覺得我這樣做的方式不是「正確」的方式,而在Visual Studio中創建新的GUI應用程序時的默認方式並不適合我。何處實例化表單?

我在做什麼是我的應用程序中有一個主要的類來完成所有的工作。它啓動了幾個收集和管理數據的線程,我希望它能夠向GUI窗體「報告」它的功能。

要打的(上圖)從我main.cs(應用程序的入口點)inits工人階級(主類)和兩個獨立的線程的形式。那麼代表們的溝通就不會像我希望的那樣「流動」了。

它會更好,如果主要形式獲取主要工人階級所以它擁有GUI形式inited?而不是兩個獨立的線程需要一些工作來相互溝通?

回答

2

這是一種方法。它可能不是您所做的最佳選擇,取決於您傳遞的數據:

您可以將窗體作爲啓動對象,並使用BackgroundWorker控件。

BackgroundWorker有幾個事件,所有這些形式的線程上自動運行,因此您不必擔心代表。

BackgroundWorker支持報告進展情況,並在後臺完成線程可以在完成事件返回一個對象到主線程。

我敢肯定,你不能在同一個線程啓動形式,如果你做你的方法inits形式將阻塞,直到窗體關閉(雖然我可能是錯的,因爲我沒有實際上試過了)