2014-01-20 3 views
1

У меня есть транзакция SQL UPDATE, которая подключается к базе данных SQL Server с использованием C# .NET 4.0 (в настоящее время я использую SqlCommand.ExecuteNonQuery, который не является Async, поэтому я уверен, что я нужно будет его изменить). Время выполнения транзакции длительное (около минуты). У меня есть приложение ASP.NET (Web Forms), и я хочу выполнить транзакцию асинхронно, сохраняя возможность пользователя взаимодействовать с приложением (перемещаясь по страницам). После того, как выполнение закончено, я хочу направить пользователю уведомление о том, что транзакция завершена.Отправить клиенту уведомление после обратной передачи ASP.NET

Я понимаю, что моя проблема состоит из двух частей: компонента ADO.NET Async и части запуска приложения для отправки уведомления клиенту, когда транзакция завершена.

Каков наилучший подход для реализации обеих частей?

+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

Надеюсь, что помощь

2

SignalR выполнит вашего требование

http://www.codeproject.com/Articles/315938/Real-time-Asynchronous-Web-Pages-using-jTable-Sign

или после операции SQl вы можете получить ответ от ExecuteNonQuery и сохранить его в скрытое поле, в стороне клиента вы можете использовать Jquery setInterval для проверки й скрытого значения поля

Смежные вопросы