Когда я провожу тестирование, запуская Powershell, а затем вызывая библиотеку, все работает правильно. Однако через TaskScheduler это не работает, и я могу воспроизвести эту проблему с поведением с помощью консольного приложения.
Основной поток библиотеки:
Код: Выделить всё
public class MainLibrary {
private static HttpClient g_httpclient_Main = new HttpClient();
private static List g_list_Tasks = new List();
public void EntryPoint() {
SetupTasks();
foreach (Task _t_List in g_list_Tasks)
{
_t_List.Start();
}
Task.WaitAll(g_list_Tasks.ToArray());
}
}
Код: Выделить всё
private void SetupTasks() {
Task _task_TollGate = new Task(() =>
{
QueueEndpointCall();
});
g_list_Tasks.Add(_task_TollGate);
}
private async Task QueueEndpointCall()
{
try {
HttpResponseMessage _httprm = await g_httpclient_Main.GetAsync("http://www.google.com");
_string_HTTP = await _httprm.Content.ReadAsStringAsync();
....other code
}
catch (Exception e) {
File.WriteLine...
}
}
Есть какие-нибудь предложения? Я подумываю об обновлении до .NET v8.0, однако на данный момент у меня нет для этого ресурсов, и я хотел бы, чтобы это работало в .NET 4.6.1.
Изменить (7 января 2025 г.) - Я безуспешно перешел на .NET 8 и даже попробовал локально объявить HttpClient, хотя я бы не думал, что это проблема, и все же "... другой код" не выполняется. Я считаю, что ошибка проглатывается, поскольку я не вижу файла журнала ошибок из try/catch, который оборачивает вызов HttpClient.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/793 ... kscheduler
Мобильная версия