當我開發多個較小的應用程序時,我注意到我可以在這裏或那裏使用新的線程進行後臺任務。我已經嘗試了幾個選項,主要是後臺工作人員和代表。我想要做的是有一個專用的線程類來運行我的所有線程,我可以在多個程序中重用。創建一個類來處理線程
我正在尋找有關在這種情況下閱讀或查看或應該做什麼的指導。我現在該怎麼失敗
例子:
主線程(GUI)開始 用戶點擊按鈕1,它通過一些邏輯進入和啓動多個任務密集型計算(這將凍結GUI直到計算完成)。
我希望做的是看成是這樣的..
主線程(GUI)開始 用戶點擊按鈕1創建將在排隊的某種 GUI線程的報告清單作爲線程過程進度線程計算 線程在 (可能?)線程完成和出隊稍後有線程類循環在後臺等待項目排隊和處理,因爲它走了。
我的小任務,典型的方法是
Thread fooThread= new Thread((ThreadStart)delegate
{
//command
});
fooThread.Start();
問題是,我的按鈕事件有更多的項目在他們(也許我應該重構呢?)
樣品
private void btnCopy_Click(object sender, EventArgs e)
{
//check file exists, check destination exists, etc
//start new thread
Thread fooThread= new Thread((ThreadStart)delegate
{
//copy files to destination using method foobarCopy(params)
});
fooThread.Start();
//if file copy is successful, inform user on GUI.
}
我我主要使用.NET2.0,但根據需要可能會達到4.5。
您按鈕點擊中的代碼應該可能是您的班級。 'FileCopier'或任何帶有'Start()'的。確定它是否已完成並且通知取決於您,但這真的是您的課程。我不確定你需要創建自己的線程管理器類,而是將該代碼重構爲業務對象,並且從那裏你至少可以看到下一個重構的基類中可以做些什麼。 – TyCobb
聽起來像使用現有的線程池支持會更好。 –
也許您應該使用異步回調方法來處理gui的結果,或者您可以使用面向方面的框架檢查或控制您的邏輯,數據等,如spring.net aop。 – FreeMan