Этот метод вызывается из основного потока wpf. Throwing - Невозможно неявно преобразовать тип 'bool' в 'System.Threading.Tasks.Task'. Что я делаю неправильно? DocCollection имеет тип ObservableCollection.Невозможно неявно преобразовать тип 'bool' в 'System.Threading.Tasks.Task'
Task TaskProcesQueue(SynchronizationContext _SyncContext)
{
return Task.Run(() =>
{
if (DocCollection != null)
{
foreach (var item in DocCollection.ToList())
{
ProcessCurrentDocument(item);
var t = Task.Run(() => DocCollection.Remove(item), _SyncContext));
}
}
});
}
Вы уверены, что это за работой? ваши закрывающие скобки, похоже, не синхронизированы ... – Noctis
с использованием 'Task.Run' для удаления элемента из коллекции (при условии, что коллекция имеет разумный размер) является избыточным. –
@YuvalItzchakov Нет, это не так. OP делает это, чтобы убедиться, что удаление происходит в правильном контексте синхронизации. Вызов 'Remove' напрямую будет делать это в фоновом потоке и приведет к тому, что любые события, созданные им, будут выполняться в фоновом потоке. Теперь, что OP в вопросе не совсем правильный способ сделать это, поэтому сообщение об ошибке, но то, как вы предлагаете, тоже. – hvd