Использую стороннюю библиотеку, в которой есть асинхронная функция. Это функция при некоторых условиях может работать некорректно и зависать "навечно". Пытался прерывать задачу с помощью токенов отмены, а также помещал функцию в отдельный поток и пытался "убивать" его Abort'ом. Ничего не помогает.
Разработчик библиотеки признает проблему, но решение к сожалению предложить никакое не может. А создавать альтернативу этой функции я не могу. Что же мне делать?)) Можно конечно игнорировать эти зависания и создавать новые потоки до тех пор, пока все не пройдет гладко. Но это ведь утечки, на сколько я понимаю. Не очень нравится такое.
Есть предположение, что можно создать отдельный процесс, который бы содержал только эту функцию. Тогда даже при зависании функции вроде бы не должно возникнуть проблем с завершением этого процесса. Пойдет ли такой вариант и какие возможные негативные последствия могут возникнуть при таком решении?
Собственно функция открывает в браузере вкладку с авторизацией, затем эту функция ждет, когда я авторизуюсь в ней. И только после этого работа продолжается. Однако если я проигнорирую авторизацию и закрою вкладку или браузер, то функция так и останется в ожидании, потому что, как я понял, она не в состоянии перехватить событие закрывающейся вкладки в браузере.
Вот и функция:
private SheetsService GetSheetsService()
{
UserCredential credential;
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
string credPath = "google-token";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
new string[] { SheetsService.Scope.Spreadsheets },
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
}
return new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
});
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости