У меня есть веб-страница с кнопкой, которая генерирует некоторые файлы на пути к серверу. (Требуется от 5 до 20 минут). Я хочу создать задачу async, которая будет продолжать выполняться даже после закрытия пользователем браузера. Можно ли сделать это с помощью asp.net 4 и C#?Выполнить метод асинхронно в asp.net
ответ
Или что я не понял, что вы хотите сделать, или что вам не нужно ничего делать.
После отправки запроса процесс запроса продолжается независимо от того, закрыт ли пользовательский браузер или нет. Вам не нужно, чтобы сделать вещь
Fabulous природа лиц без применения WEB ...
Nice. но как заставить страницу не ждать, хочет ли пользователь выполнять другие действия на странице. – user194076
@ пользователь194076. ajax-запросы. google _ "ajax tutorial" _ если это для вас ново. – gdoron
вы должны создать поток, который делает давно работает задачу
взглянуть на ниже:
http://kiranpatils.wordpress.com/2010/01/01/performing-a-long-running-task-with-asp-net/
в любом то, что вы начинаете на сервере он будет продолжать работать, даже если пользователь закрывает браузер (пока вы не перерабатывают приложение-пул или перезапустить веб-сервер).
Эта статья 9 лет и не применяется к текущим стандартам разработки ASP.NET. –
Это не меняет способ работы asp.net –
Нет, это не так, но совет по разработке плох. С тех пор многое стало известно. –
Создание новой темы/использование пула потоков - это самый простой способ создания задач запуска.
Обратите внимание, что нет гарантий, что процесс останется в живых в течение продолжительной длительной задачи, поэтому будьте готовы к частичной частичной и ручной перезагрузке. То есть Перезапуск AppPoll из-за изменения конфигурации.
Самый простой способ - поставить задачу на ThreadPool. Нитки пула потоков останутся в живых даже после завершения веб-страницы. Код будет выглядеть так:
/* Beginning Method */
object someData = new object();
ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessAsync), someData);
/* Ending Method */
static void ProcessAsync(Object stateInfo)
{
string dataToString = stateInfo.ToString();
}
На самом деле, вы не должны этого делать. Вместо этого рекомендуется создать службу (например, службу Windows), которая выполняет асинхронную обработку. В своем веб-приложении вы создаете методы, которые запускают этот процесс, и другой метод, который опросит службу, чтобы определить, завершена ли обработка.
Существует несколько причин для этого, но одним из самых больших является то, что стандартная и рекомендуемая конфигурация для веб-серверов позволяет серверу убивать длительные запросы.
Можете ли вы дать мне пример, как это сделать? или ссылку на действительный учебник. – user194076
Создайте интерфейс в своем веб-решении, которое содержит методы, которые вы хотите открыть из своего веб-сервиса. Следуйте инструкциям [link] (http://www.codeproject.com/Articles/3990/Simple-Windows-Service-Sample) здесь, чтобы создать веб-сервис, реализующий интерфейс. Добавьте конечные точки службы [web] в свое веб-приложение, которое будет передано службе Windows. Я много глотаю; для этого потребуется немалая работа, но есть много учебных пособий по тому, как это сделать, вот как я научился в первый раз. –
Вы не контролируете пул потоков в приложении asp.net. Вы даже не можете гарантировать, что запрос будет завершен в том же потоке, с которого он начинался. Создание потоков использует тот же пул приложений, который использует веб-сервер, и вы можете использовать все потоки запросов, оставляя веб-сервер недоступным для обработки запросов.
Вы должны реализовать службу Windows, в которой размещается служба WCF, которую вы можете вызвать из своего веб-приложения. В этой службе вы можете запустить поток для обработки долгого процесса. В конце этого процесса вы можете обновить флаг состояния (например, от Обработка до Завершить), которую пользователь может просмотреть, чтобы определить, выполнены ли файлы.
Я бы порекомендовал использовать Topshelf для реализации вашего обслуживания Windows, это сэкономит вам много головной боли.
- 1. выполнить метод C# асинхронно с помощью Threading
- 2. Выполнить код асинхронно в C#
- 3. Выполнить Spring класс асинхронно
- 4. Как выполнить медленный метод асинхронно в одном потоке?
- 5. Лучший способ выполнить метод асинхронно в Android (компактный и правильный)
- 6. выполнить метод C# асинхронно с помощью Threading в службе windows
- 7. выполнить DefferedObjs асинхронно
- 8. , выполняющий метод асинхронно
- 9. Как выполнить функцию Controller.destroy асинхронно в рельсах?
- 10. Как выполнить синхронный метод асинхронно и дождаться результата
- 11. выполнить SSIS или пакет DTS асинхронно из ASP.NET
- 12. Invoke метод WCF асинхронно
- 13. Как вызвать метод асинхронно?
- 14. Метод вызова асинхронно в C#
- 15. Как выполнить мутацию реле асинхронно?
- 16. Асинхронно обновляя диаграмму ASP.NET
- 17. Использование WebClient в ASP.NET MVC асинхронно?
- 18. Вызов двух методов Асинхронно в ASP.NET 2.0
- 19. Как выполнить несколько потоков асинхронно в Java
- 20. Как выполнить действие асинхронно в .net 4
- 21. Как выполнить функцию асинхронно в C++?
- 22. Как асинхронно перечислить коллекцию в среде ASP.NET?
- 23. ASP.NET/WCF - Выполнение сервера. Выполнение асинхронно
- 24. Как выполнить запрос cypher асинхронно с neo4jclient
- 25. несколько веб-запросов асинхронно в asp.net?
- 26. Выполнить метод ASP.net из метода JavaScript
- 27. метод класса вызова php асинхронно
- 28. Как выполнить две панели обновления на странице Асинхронно за раз?
- 29. ASP.NET - асинхронный WebService? Это действительно асинхронно?
- 30. Обновление строк в DataGrid асинхронно в ASP.NET
Другие вопросы: http://stackoverflow.com/search?q=asp.net + long + running + task –
Это тот же вопрос, что и http://stackoverflow.com/questions/57845/backgroundworker-thread-in-asp-net – PinnyM