none
如何停止 backgroundworker ? RRS feed

  • 問題

  • 各位先進好:
    小弟使用background worker (BGW) 來背景取得資料庫資料,以避免使用者誤認為是系統當掉。但目前遇到一個問題就是當欲取得的資料過大時,通常會跑很久。使用者不想等會直接把視窗關掉。此時就會跳出例外視窗。
    小弟試了CancelAsync的方法,但似乎沒用。想請教先進的就是當我丟出需求至SQL SERVER後,我如何取消需求呢? 也就是USER關掉視窗後,我可以順利的把BGW停掉呢??     
    斗請前輩們指教~~~謝謝!!
    2009年10月20日 上午 09:16

解答

  • 如果你是傳 SQL Server 的,你可以考慮使用非同步的 SQL 方法:

    SqlCommand.BeginExecuteNonQuery()
    SqlCommand.BeginExecuteDataReader()
    SqlCommand.BeginExecuteXmlReader()

    再配合你的 BackgroundWorker 的 CancelAsync() 應該就可以了。


    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    除非不能打中文,否則請尊重當地語系的網友,使用中文發問或回答,這是一種基本禮貌。
    • 已標示為解答 Coolmin 2009年10月21日 上午 01:17
    2009年10月20日 上午 10:17
    版主

所有回覆

  • 请问关于backgroundworker不能关掉的问题


    參考此篇試試囉...
    2009年10月20日 上午 09:35
  • 請參考點部落 [多執行緒初探--使用BackgroundWorker(2) ]

    '以下補充說明
    因為你考慮到關掉視窗的狀態, 所以要在[Form.FormClosing 事件 ]中處理停止的問題
    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年10月20日 上午 09:38
    版主
  • 如果你是傳 SQL Server 的,你可以考慮使用非同步的 SQL 方法:

    SqlCommand.BeginExecuteNonQuery()
    SqlCommand.BeginExecuteDataReader()
    SqlCommand.BeginExecuteXmlReader()

    再配合你的 BackgroundWorker 的 CancelAsync() 應該就可以了。


    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    除非不能打中文,否則請尊重當地語系的網友,使用中文發問或回答,這是一種基本禮貌。
    • 已標示為解答 Coolmin 2009年10月21日 上午 01:17
    2009年10月20日 上午 10:17
    版主
  • 感謝貴先進寶貴的解答,讓小弟有方向去進行測試。
    感謝各位!!!

    2009年10月21日 上午 01:17