此方法是從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