Я пытаюсь отправить 100 сообщений в веб-приложение api из консольного приложения. Но программа заканчивается перед отправкой сообщений в веб-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 (новый LogMessage() {}) ; } XYZ(); Метод XYZ() должен ждать до тех пор, пока все 100 сообщений не будут отправлены должным образом. Как я могу перейти к XYZ(), пока все сообщения обрабатываются. – Gangz