У меня есть асинхронный метод (назовем его Initialize ()), который запускает различные другие методы, используя await.
Initialize () вызывается способом блокировки. Мой профессор сказал мне, что я должен сделать этот метод Initialize () также асинхронным, создав метод InitializeAsync (). Поэтому мой метод InitializeAsync () теперь вызывает Initialize () с использованием async и await, а мой метод Initialize () также использует async и await.
Проблема: я не знаю, почему, но моя программа начинает работать, но закрывается не в ожидании Initialize (). Есть идеи, что я делаю не так?
public Client(string ipAddress, int port, string name)
{
this.username = name;
this.port = port;
this.ipAddress = ipAddress;
this.status = Status.WAIT;
this.InitializeAsync();
}
private async void InitializeAsync()
{
await Initialize();
}
private async Task Initialize()
{
this.users = new List<User>();
this.SetupListenSocket();
// Starting the listener.
Task listenerTask = new Task(ListenEndless);
listenerTask.Start();
this.SetupSendSocket();
// Starting the useriput sending.
Task sendingTask = new Task(SendEndlessUserinputs);
sendingTask.Start();
string heloMessage = "cf-1.0:HELO:" + this.username;
// Sending the helo message.
this.SendMessage(heloMessage);
// Starting the endless ping sender.
Task pingTask = new Task(SendPingEndless);
pingTask.Start();
await listenerTask;
await sendingTask;
await pingTask;
Console.WriteLine("\nDone.");
Console.ReadKey();
}