1
我試圖從控制檯應用程序向Web api發送100條消息。但是該程序在將消息發送到web api之前就已經結束了。如果我把Console.ReadLine();
結束它正在工作。任何人都可以幫助我解決這個問題嗎?控制檯應用程序中的HttpClient PostAsync調用未完成
我已經發布了我在下面使用的代碼。
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);
}
如果我使用result.wait(),它將不再是異步的。 – Gangz
是的。但是這裏的問題是當進程結束時異步操作仍在運行,這意味着操作中斷。在某些時候,您必須等待線程。 – NtFreX
ok。如果一個方法XYZ()被調用,像這樣(int i = 0; i <100; i ++){ ProcessLog(new LogMessage(){}) ; } XYZ(); XYZ()方法必須等待,直到所有100條消息都成功發佈。如何在處理所有消息時繼續處理XYZ()。 – Gangz