Мы делаем вызов веб-службы для некоторых обновлений данных, чтобы синхронизировать другую базу данных. Этот вызов веб-службы занимает некоторое время ответа. Поможет ли добавление в тему? Есть ли недостатки в этом? Если вызовы веб-службы терпят неудачу, она терпит неудачу, и это все. Это как пожар и забыть звонок.
Вызов веб-службы ASP.NET в другом потоке
- Майк... Является ли клиент приложением для Windows или веб-приложением? Если приложение Windows, вы можете безопасно сделать асинхронный вызов. Это лучше и безопаснее, чем использование потоков. Но для веб-приложений я рекомендую не использовать вместо этого Ajax. 06.01.2012
- Это обратная передача веб-приложения или ajax. 06.01.2012
Ответы:
Вы можете использовать вызов асинхронной веб-службы, используя асинхронные обратные вызовы, чтобы предотвратить блокировку основного потока.
Выполняя асинхронный вызов веб-службы, вы можете продолжать использовать вызывающий поток, ожидая ответа веб-службы. Это означает, что пользователи могут продолжать взаимодействовать с вашим приложением без его блокировки, пока продолжается доступ к веб-службе.
Из MSDN: выполнение асинхронных вызовов веб-служб
Если зависание пользовательского интерфейса занимает достаточно много времени, рекомендуется вызвать его в другом потоке.
В дополнение к ответу Тюдора я бы посоветовал вам начать с использования нового Task из .NET 4.0.из параллельной библиотеки задач. Примером может быть:
Task backgroundProcess = new Task(() =>
{
service.CallMethod();
});
Я настоятельно рекомендую не использовать вызовы асинхронной веб-службы (включая выполнение вызовов в отдельных потоках) из веб-приложения. Вместо этого используйте альтернативный подход, такой как Ajax, и сделайте этот вызов веб-службы из экземпляра Ajax Call. В веб-контексте нет простого подхода к обработке потоков и асинхронных вызовов.