Правильная обработка ошибок в асинхронном методе. TelegramBot API
Я делаю телеграм бота, в котором бот отправляет уведомление клиенту о смене статуса заказа в другой программе.
Суть проблемы: если возникнет какая-либо ошибка от телеграма, то обрабатывается метод ErrorHandler
. В нем я сделал MessageBox
который предлагает перезапустить бота. И мне нужно, что бы при удовлетворительном ответе программа могла перезапустить бота или просто продолжать работать.
Решил проблему с помощью команды Process.GetCurrentProcess().Refresh();
. Есть ли более правильные решения по перезапуску бота? До этого писал cts.Cancel();
и StartReceiving();
, но он снова обрабатывал то же сообщение и MessageBox
мог 100 раз вылезать подряд.
private async Task Error(ITelegramBotClient botClient, Exception exception, CancellationToken token)
{
if (System.Windows.MessageBox.Show("Ошибка! " + exception.Message + "\n\nПерезапустить бота?", SaveClass.NameApp, MessageBoxButton.YesNo) == MessageBoxResult.Yes)
{
Process.GetCurrentProcess().Refresh();
}
else
{
Process.GetCurrentProcess().Kill();
}
}