Wenn ich Tests durchführe, indem ich Powershell starte und dann die Bibliothek aufrufe, funktioniert alles ordnungsgemäß. Über den TaskScheduler funktioniert es jedoch nicht und ich kann dieses Verhaltensproblem mit einer Konsolenanwendung reproduzieren.
Hauptbibliotheksthread:
Code: Select all
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());
}
}
Code: Select all
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...
}
}
Irgendwelche Vorschläge hier? Ich denke darüber nach, ein Upgrade auf .NET v8.0 durchzuführen, verfüge jedoch derzeit nicht über die Ressourcen dafür und würde dies gerne in .NET 4.6.1 zum Laufen bringen.
Bearbeiten (7. Januar 2025) – Ich bin erfolglos auf .NET 8 migriert und habe sogar den Vorschlag ausprobiert, HttpClient lokal zu deklarieren, obwohl ich nicht glaube, dass das das Problem ist, und der „...andere Code“ ist es immer noch nicht hingerichtet wird. Ich glaube, dass ein Fehler verschluckt wird, da ich keine Fehlerprotokolldatei von try/catch sehe, die den HttpClient-Aufruf umschließt.
Vielen Dank.