public void Check() { var songs = repository.LoadByStatus(Song.SongStatus.Idle); foreach (var song in songs) { // Update status before adding song.Status = Song.SongStatus.WaitCheck; repository.Update(song); // Add song to Download Queue checker.GetSongQueue().Enqueue(song); } if (isTaskActive(checkerTask)) { // already running return; } checkerTask = new Task(() => checker.StartCheck()); checkerTask.Start(); }