此方法是从wpf主线程调用的。 投掷 - 不能隐式地将类型'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