2014-01-20 102 views
1

我有一個UPDATE SQL事務,它使用C#.NET 4.0連接到SQL Server數據庫(我當前使用的是不是異步的SqlCommand.ExecuteNonQuery,所以我確定我是會需要改變它)。交易執行時間很長(大約一分鐘)。我有ASP.NET應用程序(Web窗體),我希望異步執行事務,同時讓用戶能夠與應用程序交互(瀏覽頁面)。執行完成後,我希望向用戶推送一種通知,告訴他交易已完成。在回發後向客戶端發送通知ASP.NET

我意識到我的問題有兩個部分:ADO.NET異步部分和觸發應用程序在事務完成時將通知推送到客戶端的部分。

實現兩個部件的最佳方法是什麼?

+0

您可以使用您的Asp中的更新面板發起一個異步調用服務器。加載時顯示某種gif。 http://msdn.microsoft.com/en-us/library/bb399001.aspx和http://www.asp.net/web-forms/tutorials/aspnet-ajax/understanding-asp-net-ajax-updatepanel-觸發器 – weilah

+0

SignalR與Dibu建議的一樣,將成爲您的情況的理想解決方案,您可以在ASP.net網站上找到大量文檔/示例。但是如果您不贊成對應用程序進行大的修改,請特別提及它(您不想使用SignalR)。 –

+0

您希望用戶在服務器正在處理任務時能夠繼續瀏覽網頁(可以完成)。當服務器任務完成時,它必須發送通知給...?無法完成。 –

回答

1

其實您可以使用jquery對執行SQL事務的方法執行異步調用,然後您將在代碼執行完成後向用戶返回消息。 欲瞭解更多信息,請查看下面的例子 jQuery代碼

$.post("PageName.aspx/UpdateMethodName", {}) //you can replace method name 
    .done(function(data) { 
    alert(data); 
}); 

現在在你的ASPX頁面,你必須有飾有[WebMethod]屬性

[WebMethod] 
    public static string UpdateMethodName() //method name will be called from jquery 
    { 
    // your 
    return "Message"; 
    } 

更多信息可以在這裏找到 JQuery.Post()一個靜態方法

Using jQuery to directly call ASP.NET AJAX page methods

我希望幫助