2012-09-24 65 views
0

我對Windows窗體很陌生。我創建的Windows窗體應用程序是執行非常耗時的數據轉換任務的組件的前端。數據轉換任務發出表單訂閱的事件。窗體窗體 - 當一個耗時的操作發生時窗體會凍結

當表單接收到事件時,它會更改標籤中的文本併爲該標籤調用Refresh()

當我從窗體運行該過程時,它會保持響應並更新標籤文本大概一分鐘左右。之後,它會凍結,Windows會聲明進程「無響應」,直到數據轉換完成,此時表單解凍並且標籤顯示數據轉換已完成(如預期的那樣)。

我還沒有把數據轉換到一個單獨的線程 - 這是我應該嘗試的第一件事?事件是否可以跨線程?如果不是,我該怎麼辦?

+0

你可以顯示你的一些代碼..?這是你可能使用線程的東西..? – MethodMan

+0

哪個版本的.NET?較新的版本有可用於線程的其他選項。無論如何,是的,線程是你的第一選擇。看到這個帖子的想法。 http://stackoverflow.com/questions/464338/multithreading-libraries-for-net – David

+0

.NET 4.我看不出爲什麼工作不能在另一個線程上完成。它從文本文件讀取數據,將其轉換並寫入其他文本文件。 – David

回答

2

是的,線程是你應該工作的地方。 WinForms中的多線程可能會非常棘手,具體取決於您的版本。

如果您使用.NET 4.0或更高版本,則可以使用Microsoft Task Parallel Library

否則,C#Corner中有一篇很好的文章,here,涵蓋了我建議作爲起點的WinForms應用程序中的線程。

BackgroundWorker是簡化WinForms中的線程的另一種選擇。

+0

你的鏈接是一大堆我一無所知的東西。您的帖子最有幫助 - 謝謝。 – David

+0

這就是我們來這裏的原因。祝你好運! – David

相關問題