大家好問題我有一個後臺工作和DataTable。我也有一個計時器。我正在填充計時器中的數據表,並在Backgroundworker_Progress更改我正在將其DataGrid作爲我的DataSource進行分配。但即使這個過程已經完成。我的背景工人沒有得到完成。由於其時我啓動我的exe文件直接背景工人和數據表
Q
背景工人和數據表
3
A
回答
3
我同意@Simon。粘貼一些代碼,以便我們理解可能是錯誤的。 另外,你爲什麼使用計時器?
不要在ProgressChanged
事件分配DataTable
。在RunWorkerCompleted
事件中執行此操作。這是我認爲你應該做的:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
try
{
e.Result = GetTableData();
}
catch (Exception ex)
{
e.Result = ex;
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// only display progress, do not assign it to grid
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Result is DataTable)
{
dataGridView1.DataSource = e.Result as DataTable;
}
else if (e.Result is Exception)
{
}
}
private DataTable GetTableData()
{
DataTable table = new DataTable();
for (int i = 0; i < NumOfRows; i++)
{
//... fill data here
backgroundWorker1.ReportProgress(i * 100F/NumOfRows);
}
return table;
}
1
你不能沒有做一個調用從後臺線程訪問GUI控件()我的應用程序crashes.This纔會發生。
我懷疑這是你的問題,如果不是你可能需要提供導致該問題的部分的一些代碼。
欲瞭解更多信息,請參閱:
- MSDN - InvokeRequired
- MSDN - Invoke(...)]
- StackOverflow question - How to update GUI from another thread in C#?
如果你換行代碼在你的後臺工作在try/catch塊,或者改變你視覺工作室設置顯示所有異常,你會看到一個異常,解釋發生了什麼問題。
相關問題
- 1. 背景工人不工作
- 2. 背景工人代表與調用者
- 3. WPF,背景工人和垃圾收集
- 4. 同步背景工人
- 5. 背景工人懷疑
- 6. 背景PHP工作人員
- 7. 背景工人如何
- 8. 問題的背景工人
- 9. 背景工人與一次性參數
- 10. 代表和背景工人類中的事件
- 11. 核心數據背景緩慢和背景保存,sqlite背景和mergeChangesFromContextDidSaveNotification
- 12. 背景工人自取消消息
- 13. C#背景工人與zipfile(Ionic.dll)
- 14. C#Ionic.Zip進度爲背景工人
- 15. 從背景工作檢索GUI數據
- 16. CSS背景數據URI不工作(鉻)
- 17. 更改數據表的列背景
- 18. WPF調度,背景工人和很多痛苦
- 19. 在resque和delayedjob的背景下,什麼是工人?
- 20. 數據集和背景減法
- 21. 填充,列表和背景
- 22. 限制執行的背景工作人數
- 23. 將背景表面置入背景只是部分工作
- 24. 背景/背景圖片不工作?
- 25. 背景大小和背景重複如何工作?
- 26. Rails + XMPP機器人背景
- 27. CSS - 個人背景圖像
- 28. Android背景下載數據
- 29. 使用API和多表單數據的Twitter背景上傳
- 30. 根據風景/人像更改UINavigationBar背景?
我該如何平行地更新用戶界面 – subbu 2010-03-01 04:19:06