2010-09-27 28 views
2

我有一個非常奇怪的問題與背景的工人。代碼太複雜了,所以試圖解釋這個問題只是想知道是否有人看到類似的東西。 我們有UI線程分拆後臺線程 後臺線程做一些印刷在後臺 一個PDF打印機完成後,它只是死在線程函數退出,所以我希望得到提升的RunWorkerCompleted事件Backgroundworker runworkercompleted not firing

這是贏得形式.NET 2.0

所以每次我們做一個新產品的安裝和火起來我們的應用程序的runworkercompleted即使不被炒魷魚 如果我們從任務管理器殺了我們的應用程序,並開始了它的工作原理是時間一種魅力(我們有點擔心用戶看到我們產品的第一件事是掛起:-))

記錄證實,在任何情況下 I)的後臺輔助線程函數不退出乾淨 II)沒有異常都在提出上述線FUNC

這兩個機器之一Win7和Vista的一臺100%reproable SP1。它真的,我不明白什麼第一次運行有它

做任何的建議表示歡迎

+0

因此,「如果我們從任務管理器中刪除我們的應用程序,完成的runworker甚至不會被解僱」。要麼不要使用TaskMan,要麼在問題中添加一些標點符號。 – 2010-09-28 11:09:27

+0

您可能沒有給BackgroundWorker足夠的時間啓動。 – leppie 2010-09-28 11:14:16

+0

我看到完全相同的問題。第二次工作,但不是第一次? – BlueChippy 2012-01-24 08:48:35

回答

1

我有這個問題,當我意識到我正在處理我的BackgroundWorker對象並在異步執行完成之前太早分離事件處理程序。查看你的代碼,並確保你沒有使用塊或使用塊專門調用dispose或以其他方式斷開你的事件處理程序來包圍你的BackgroundWorker。

1

是對RunWorkerCompleted事件實際註冊到BackgroundWorkers事件處理程序?

它似乎幾乎是一個完整性檢查,但這可以解釋爲什麼BackgroundWorker乾淨地退出,並且RunWorkerCompleted沒有被解僱。

+0

是的,請記住它從第二次開始工作 – Rahul 2010-09-27 23:58:19

+0

對不起,我錯過了你的描述;你可以發佈你的BackgroundWorker骨架的代碼示例嗎?還是在RunWorkerCompleted子版的開頭直接使用斷點? – 2010-09-28 08:03:52