private async void Monster_Dead(object sender, EventArgs e) { await Task.Factory.StartNew(() => { // Используем ReferenceEquals, потому что нам нужно сравнить object и ISurvivalData по ссылке. // Это делаем, чтобы избежать приведения sender к ISurvivalData. var viewModel = ActorViewModels.SingleOrDefault(x => ReferenceEquals(x.Actor.Person.GetModule <ISurvivalModule>(), sender)); if (viewModel != null) { ActorViewModels.Remove(viewModel); } }, CancellationToken.None, TaskCreationOptions.None, _taskScheduler); }