#c# #winforms #deployment #updates
#c# #winforms #развертывание #Обновления
Вопрос:
Кажется, у меня странная проблема с ApplicationDeployment.CheckForUpdateAsync
методом. В настоящее время у меня есть таймер, который проверяет сервер на наличие обновлений с заданным интервалом. Причина этого в том, что нам нужно убедиться, что все находятся в последней версии, и когда новая версия доступна, уведомить всех, что она доступна.
Однако, хотя он работает нормально, если сервер подключен к Сети, если возникает сетевая ошибка или сервер отключается во время проверки, .NET возвращает ошибку Socket
или WebException
.
Я пытался поймать ошибки:
try
{
_ad.CheckForUpdateAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Например, но даже если я помещу WebException
или любой другой тип исключения в этот catch, похоже, он его не улавливает. Я предполагаю, что это потому, что CheckForUpdateAsync()
происходит в отдельном потоке.
Есть ли какой-либо способ надежно перехватить эти ошибки, чтобы у меня не было случайных .NET errors
появлений во время работы?
Ответ №1:
вы можете проверить ошибки при развертывании приложения. Метод CheckForUpdateAsync путем добавления CheckForUpdateCompleted
еще, как показано ниже
ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
ad.CheckForUpdateCompleted = new CheckForUpdateCompletedEventHandler(ad_CheckForUpdateCompleted);
в
void ad_CheckForUpdateCompleted(object sender, CheckForUpdateCompletedEventArgs e)
{
if (e.Error != null)
{
// e.Error details here
}
}
вы можете найти InvalidDeploymentException
и DeploymentDownloadException
подробную информацию в свойстве ошибки события CheckForUpdateCompleted.
Комментарии:
1. Я не ожидал, что он вернется в это местоположение; учитывая, что проверка завершилась неудачей, я бы не ожидал, что завершенное событие сработает. Но я попробую, и лайк, если у меня не получится 🙂 Тай!
2. поскольку это асинхронный метод, результат необходимо увидеть при завершении события подробнее на MSDN