0
我有一個帶有幾個進度條的主線程。每個進度條都是DataTable讀數的進度,所以我有6個不同變量的進度條(DataTable dt1, ... dt2, ... dt3, ...)
,這是疼痛開始的地方。從線程到主線程的交叉結果
我一直在使用任務,線程,BackgroundWorker的,等等,我無法找到一個乾淨的方式:
- 選擇信息的位置讀取
- 負載
Async
上的主要進展螺紋 - 返回讀
DataTable
並將其存儲在各自的dt
我有做到了:
Task t = Task.Factory.StartNew(new Action(() =>
{
dt1 = customProgress.Read<DataTable>("Path");
}));
編輯:我的問題很混亂,事實上。我將重寫它:
是否有更有效的方法來通過線程交叉這種信息或創建一個變量來等待MainThread運行時的結果?
我不明白。你想要在後臺線程上執行代碼,但是你不想指定代碼應該在後臺線程上執行? – svick
'Task.Factory.StartNew()'是將該操作放在線程池上,以便它異步運行並且不會阻塞main。如果你刪除它,那麼它會阻止main()直到它完成。你可以刪除'new Action()',因爲它知道如何適當地建立一個lambda,但如果你想異步運行,其餘部分是必須的。 – Despertar
你真的認爲這是完成這麼複雜任務的代碼量過大嗎?如果這對你來說是一個漫長而乏味的代碼,那麼你將會在編程生涯中遇到一些真正的困難。 – Servy