2013-12-09 38 views
0

ProcessASP.Net MVC 4 - 一個多線程的

我有一個MVC 4應用程序,應做到以下幾點:

1-詢問用戶輸入他們的電子郵件地址(行動1 - >查看1 )

2-顯示接收請求的確認(操作2 - >查看2) - 用戶應該能夠關閉此處的網頁

3-在服務器上啓動長時間進程(動作3),完成後通過電子郵件通知用戶。

我該如何做到這一點?我需要在Action 2上創建一個新線程,我是否正確?

謝謝!

+0

聽起來像CQRS風格系統的完美人選。 –

+1

聲音正確。你試過了嗎? – bhamlin

+0

asp.net中的每個請求都由一個單獨的線程處理。 –

回答

3

考慮使用任務並等待包含在.net 4.5中。顯示異步方法例如:

public async Task<List<Gizmo>> GetGizmosAsync() 
{ 
    var uri = Util.getServiceUri("Gizmos"); 
    using (HttpClient httpClient = new HttpClient()) 
    { 
     var response = await httpClient.GetAsync(uri); 
     return (await response.Content.ReadAsAsync<List<Gizmo>>()); 
    } 
} 

完整的文章可以在這裏找到:http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4

2

我會把消息從行動2成某種形式的消息隊列。然後我會有一個後臺進程(最好在不同的服務器上)處理消息併發送郵件。這樣,您的Web服務器就可以專注於提供網頁和Web服務,而不需要爲長時間運行的任務提供服務。

+0

非常好的一點!謝謝! – RonaDona