Ich versuche 100 Nachrichten an eine Web-API aus einer Konsolenanwendung zu senden. Das Programm wird jedoch beendet, bevor die Nachrichten an die Web-API gesendet werden. Wenn ich am Ende Console.ReadLine();
setze, funktioniert es. Kann mir jemand bei diesem Problem helfen?HttpClient PostAsync-Aufruf in der Konsolenanwendung wird nicht abgeschlossen
Ich habe den Code, den ich unten verwendet habe, gepostet.
static void Main(string[] args)
{
CreateLog();
}
private static void CreateLog()
{
for(int i=0;i<100;i++)
ProcessLog(new LogMessage() { });
}
private static void ProcessLog(LogMessage message)
{
//Post message to web service
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(@"web api url");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpContent contentPost = new StringContent(
JsonConvert.SerializeObject(message),
Encoding.UTF8,
"application/json");
client.PostAsync("api/xxx", contentPost);
}
Wenn ich result.wait() verwende, wird es nicht mehr asynchron sein. – Gangz
ja. Das Problem hierbei ist jedoch, dass Ihre asynchrone Aktion immer noch ausgeführt wird, wenn der Prozess endet, was bedeutet, dass die Aktion unterbrochen wird. Irgendwann musst du auf den Thread warten. – NtFreX
ok.Wenn eine Methode XYZ() wie folgt aufgerufen wird für (int i = 0; i <100; i ++) { ProcessLog (neue LogMessage() {}) ; } XYZ(); Die XYZ() - Methode muss warten, bis alle 100 Nachrichten erfolgreich hochgeladen wurden. Wie kann ich mit XYZ() fortfahren, während alle Nachrichten verarbeitet werden? – Gangz