private async Task MatchingTask() { //Wait some time DebugLogWriteLine("MatchingTask started, waiting"); await Task.Delay(30000); if (!Active) { DebugLogWriteLine("MatchingTask canceled. Set Active to false"); return; } //Get all users DebugLogWriteLine("MatchingTask Matching"); DateVoiceLobbies.Clear(); DateVoiceLobbies.AddRange(GetVoiceLobbies(true)); RefreshUsersInLobbies(); //Match users //Move pairs TryMatchUsers(); //Removeitself or restart DateVoiceLobbies.Clear(); DateVoiceLobbies.AddRange(GetVoiceLobbies(true)); RefreshUsersInLobbies(); if (UsersInLobbies.Count > 4) { //Restart? if not same gender CurrentMatchingTask = MatchingTask(); _ = CurrentMatchingTask.ConfigureAwait(false); } else { CurrentMatchingTask = null; } }
private void TryStartMatchingTask() { if (CurrentMatchingTask == null && Active) //await (CurrentMatchingTask = MatchingTask()).ConfigureAwait(false); { CurrentMatchingTask = MatchingTask(); CurrentMatchingTask.ConfigureAwait(false); } }