我需要一個在後臺運行作業的代碼塊。假設用戶點擊提交按鈕,然後作業在後臺開始,同時用戶關閉該窗口並運行不同的作業,作業應該繼續運行。在後臺運行作業
請在ASP.NET和VB.NET中提供一些幫助。
非常感謝你的幫助
我需要一個在後臺運行作業的代碼塊。假設用戶點擊提交按鈕,然後作業在後臺開始,同時用戶關閉該窗口並運行不同的作業,作業應該繼續運行。在後臺運行作業
請在ASP.NET和VB.NET中提供一些幫助。
非常感謝你的幫助
你可以看看的ThreadPool.QueueUserWorkItem方法,它允許您運行從線程池中提取一個線程一些某種方法。作爲替代方案,如果使用Thread類是一個長時間運行的任務,則可以使用Thread類來手動生成一個新線程,以避免危及包含有限數量的線程並且也用於在ASP.NET應用程序中處理請求的池中的線程。
您可以使用BackgroundWorker,具體取決於您的上下文。
您可以通過創建一個承載wcf服務的windows服務來實現這一點,當用戶點擊提交按鈕時,您可以將請求發送到windows服務,並且windows服務將在後臺運行,用戶關閉窗口。
A BackgroundWorker可能是最容易開始的地方。將您的代碼放入DoWork事件中。
BackgroundWorker將在後臺運行,並且可以方便地用於在需要時將更新同步回GUI。
或者使用Task Parallel Library ...
我想這2在ASP.net..not在Windows中完成 – Sreekumar 2010-12-15 14:27:37
但是在會話終止時,如果它是一個長期運行的工作情況。這些線索不會隨之而來嗎? – Patrick 2010-12-15 14:21:32
@ Patrick,不,線程與會話無關。它們與AppDomain相關,所以只要IIS保持加載的應用程序,它們就會運行。另一方面,如果IIS卸載應用程序池,線程也將停止運行。 – 2010-12-15 14:25:17
因此,根據正在執行的作業的生命週期,啓動一個線程可能無法解決此問題?你知道在應用程序被IIS取下之前需要多長時間嗎? – Patrick 2010-12-15 14:29:54