我有一個解析到html文件的方法,但它需要很長時間,UI凍結。所以我想使用一個線程,但我很困惑。線程有很多種,如後臺工作人員,調度員等。我應該使用哪種類型的?另外,在我的方法中,我傳遞了一個參數。如果我使用線程,如何傳遞一個參數?HTML解析 - 我應該使用哪種線程?
回答
下面是一個例子代碼中使用背景工人:
// I usually disable controls (buttons, etc.)
// so user is prevented to perform other
// actions
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (s, e) =>
{
// Get the parameter
var param = e.Argument as <your expected object>
// Perform parsing
}
worker.RunWorkerCompleted += (s1, e1) =>
{
System.Windows.Threading.Dispatcher.CurrentDispatcher.BeginInvoke(
new Action(() =>
{
// enable you controls here
}));
}
worker.RunWorkerAsync(parameter);
希望這有助於!
我把我的代碼在dowork,但它看起來不喜歡工作。我在dowork中有一個listview,它沒有填充。 – user1005633 2012-07-25 10:55:41
在做工作中列表視圖的目的是什麼? – lionheart 2012-07-26 08:36:23
我有一個方法,我解析一個HTML,我動態創建一個列表視圖與我從html獲得的內容。在RunWorkerCompleted中//使你在這裏控制什麼意思?我可以在那裏更新我的UI控件嗎?謝謝!! – user1005633 2012-07-26 08:52:36
自WPF以來,我不再使用backgroundworkers。我聽說它是爲WinForms創建的,應該在WPF中避免,但我可能會誤解。 既然你傳遞一個字符串作爲參數(而不是一些UI控件)應該有訪問另一個線程像這樣沒有問題:
private void DoStuff(string documentName)
{
Action a =() =>
{
var result = ParseFile(documentName);
Action b =() =>
{
TextBox1.Text = result;
};
Dispatcher.BeginInvoke(b);
};
a.BeginInvoke(callback =>
{
a.EndInvoke(callback);
}, null);
}
注意:不要把代表一個循環中,而把循環在代表內部。
- 1. 我應該在Python中使用哪種Microdata解析器
- 2. 我應該使用哪種類型的asio解析器對象?
- 3. 我應該使用哪種SSL實現?
- 4. 我應該使用哪種視圖?
- 5. Spark - 我應該使用哪種語言?
- 6. UrlEncoding - 我應該使用哪種編碼?
- 7. 我應該使用哪種Netduino硬件?
- 8. Sagepay - 我應該使用哪種API?
- 9. 我應該使用哪種IronPython IDE?
- 10. 我應該使用哪種Azure角色?
- 11. 我應該使用哪種IVI參考?
- 12. AngelScript代碼解析器 - 我應該採取哪種方式?
- 13. 我應該如何解析這種JSON?
- 14. 我應該使用哪種PayPal iPhone SDK?
- 15. 我應該使用哪種語言?
- 16. 我應該使用哪種佈局?
- 17. 我應該使用哪種DAL選擇?
- 18. 我應該使用哪種python安裝?
- 19. 我應該使用哪種佈局
- 20. Android我應該使用哪種佈局
- 21. 我應該使用哪種方法?
- 22. 我應該使用哪種NMEA語句
- 23. 我應該使用哪種Paypal SDK?
- 24. 我應該使用哪種EOL?
- 25. mysql ---我應該使用哪種類型?
- 26. 我應該使用哪種Excel公式
- 27. 我應該使用哪種PayPal服務
- 28. 我應該使用哪種PageRank公式?
- 29. 我應該使用哪種服務?
- 30. 我應該使用哪種佈局?
我經常使用Actions,但是一個側面的問題是我們在談論什麼樣的參數? – Silvermind 2012-07-25 09:23:48
我通過一個字符串參數與HTML文檔的URL ... – user1005633 2012-07-25 10:31:22