2011-06-28 53 views
2

什麼是期間在asp.net一個漫長的過程將消息發送到用戶的最佳方式。在其他語言有一個刷新方法,我看到,asp.net也有,但這是最好的方式?如果不是,你還能怎麼做?asp.net輸出信息到用戶的長期運行的任務

+0

不過,雖然在asp.net使用線程,我們不能在功能使用基於會話信息,從線程調用。 – 2013-05-15 14:20:57

回答

2

做到這一點的最好辦法是產卵一個單獨的線程執行長時間運行的進程,然後有一個從長期運行的線程請求的狀態,並顯示適當的狀態在主線程中調用Ajax。

,說明這一點在深入比較好的文章可以在這裏找到:http://www.devarchive.net/displaying_progress_bar_for_long_running_processes.aspx

+0

在WAWS,使用Azure的WebJobs,這是更簡單,更可靠。工作者角色更加健壯。 – RickAndMSFT

0

要麼使用推送通知架構(彗星)http://pokein.codeplex.com/或您的狀態保存到數據庫和網頁或者刷新,以獲取狀態或使用jQuery.ajax()來取回數據或刷新UpdatePanel上的定時器,例如:http://msdn.microsoft.com/en-us/library/cc295400.aspx

無論哪種方式 - 您的'進度'需要保存到當前會話或數據庫讀。 UI通常不會直接與處理線程交互,但都會與包含更新狀態的某個中間媒體交談。

0

正如亞當Tuliper說 - 你需要一個推送通知的框架,而最好的選擇是SignalR從微軟。無需在任何地方存儲狀態,或實施輪詢。 SignalR會將所需的所有內容都推送回瀏覽器,而啓動進程的請求(在不同的線程上)通過HubContext類將其消息直接發送到客戶端。詳情可以在here找到。