2010-05-21 18 views
0

我有一個winforms應用程序,它是按照以下方式設置的:2個按鈕,一個文本框,一個類對象MX,集合K作爲其成員,函數X和另一個函數,Y.給定場景中線程的高效實現

  1. 功能X解析一個龐大的數據庫,並列舉了一些在收集數據的K.
  2. 按鈕1調用函數X.
  3. 函數y走過上述收集並打印出數據文本框。
  4. 按鈕2調用函數Y.

我想通過一個輔助線程以這樣的方式來調用函數X說:

  1. 形式仍響應用戶輸入。這來自使用單獨線程的內在原因。
  2. 在任何時間點運行的函數X都不會超過一個實例。
  3. MX/K在任何時候都可以被兩個函數訪問。

上述環境最有效的實現是什麼?

回答

1

當您按下按鈕1時,您可以使用BackgroundWorker調用X以在單獨的線程中運行它。然後設置一個變量(或將按鈕1變灰),以便用戶不能再次運行X.

X可以在處理數據庫時寫入其自己的集合。然後它可以用這個集合替換一個實例變量。通過只做一次替換,就可以避免X和UI線程之間的同步問題。

X完成後,您可以使用BackgroundWorker事件讓UI知道操作已完成。然後你重置相同的變量(或者按下按鈕)讓用戶知道他們現在可以再次運行X了 - 如果有必要的話。

您認爲如何?這些幫助有用?