backgroundworker的使用問題

來源:互聯網
上載者:User

這幾天做項目懶了就用backgroundworker這個控制項,覺得它比多線程方便一些,然後這個線程裡面在開線程,然後慘劇就發生了:當我開啟一個主視窗後,在開啟一個子視窗,子視窗裡有個backgroundworker,然後我就啟動了這個dowork,然後就開始執行很耗時的操作,閑著無聊,我點了幾下滑鼠,一不小心把子視窗給關了,靠,執行了一半的程式,重啟吧,可是還沒等我重新開啟,奇蹟出現了,程式執行完了,這說明我關閉了視窗,但是backgroundworker還在運行,嗯?這可不行啊,我這麼嚴謹的人怎麼能出這樣的錯呢,雖然客戶是不會亂點的,好吧,讓我們看看怎麼辦-----

正題

經過我測試到現在得出結論

backgroundworker 在你關閉表單時他不會結束,什麼時候結束?是在你的整個application結束,它才結束

this.backgroundWorker1.CancelAsync()這個方法,我覺得很奇怪,它到底該怎麼用?

看msdn 調用 CancelAsync 時,輔助方法可以停止其執行並退出。輔助代碼應定期檢查 CancellationPending 屬性,查看是否已將該屬性設定為 true

這是個什麼意思呢?我理解了是不是說調用這個方法時我得先看看CancellationPending是不是true呢,不然就會取消失敗?那這個取消還有個毛用啊,CancellationPending又不是我能控制的,那我想隨時隨地的關掉這個不就無法實現了嗎?那不就等於說這個CancelAsync是無效的嗎?

最後我試了n久還是無法使用ancelAsync這個方法來取消backgroundworker

大神能給解釋嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.