2011-05-18 68 views
1

我有一個用C#編寫的程序,它從磁盤中的文件中讀取很多內容,然後輸出幾行文本,而不是很多可能是100個頂部文本文件。c#程序在讀/寫過程中死機

該程序凍結大約一半通過,我是新來的C#和編程一般從研究,似乎我需要使用一個單獨的線程從一個控制窗體。兩個問題,

  1. 我應該用於讀取和一個新的寫或只是一個用於讀取功能的一個新的線程?

  2. 這樣做的最好方法是什麼?

我希望這是有道理的,我真的很感謝您的幫助!

+0

也許。 BackgroundWorker的。 – 2011-05-18 00:54:23

+0

它是一個Windows窗體應用程序或WPF? – CharithJ 2011-05-18 00:55:54

+1

這也可以使用threadqueue很容易地完成。只需使用新的讀/寫調用EnqueueWorkerItem,它就會自動及時執行。雖然它可能是矯枉過正。 – Alxandr 2011-05-18 01:18:17

回答

2

BackgroundWorker的是在這裏使用的最好的事情。這是一個很好的tutorial,它描述了它的所有事件和屬性。

簡而言之,這是你應該做的。

  1. 根據需要創建後臺工作者實例並設置合適的properties
  2. 將所有I/O處理代碼添加到將在單獨的線程中執行的DoWork
  3. 將處理I/O操作後要執行的所有邏輯添加到將在主線程中執行的RunWorkerCompleted。在這裏你可以更新你的用戶界面,或者做任何你想在主線程中做的事情。 (您可以通過RunWorkerCompletedEventArgs.Result屬性訪問結果)

要記住,最重要的是既ProgressChangedRunWorkerCompleted事件在主線程中執行,你可以使用背景工人更新UI結果。只有後臺線程中執行的DoWork事件。