1
我想删除后台线程上的实体,但我们不能删除它创建的另一个线程上的实体,所以我怎么做,并保持ui响应?我绑定使用backgroundworker类在这里是代码c# - 实体框架多线程
void deletePeriodWorker_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(3000);
List<Period> selectedPeriods = e.Argument as List<Period>;
foreach (Period period in selectedPeriods)
{
while (period.Transactions.Count > 0)
{
Transaction transaction = period.Transactions[0];
this.Dispatcher.Invoke(new Action(() => context.Transactions.Remove(transaction)),
System.Windows.Threading.DispatcherPriority.Normal);
}
this.Dispatcher.Invoke(new Action(() => context.Periods.Remove(period)),
System.Windows.Threading.DispatcherPriority.Normal);
}
this.Dispatcher.Invoke(new Action(() => context.SaveChanges()),
System.Windows.Threading.DispatcherPriority.Normal);
}
眼看该来源是一个普通的“清单”它不能通过删除实体来改变,所以使用'foreach'是非常好的,更具可读性。 –
Rang但是如果实体被删除,如果需要一段时间,ui会继续响应,会发生什么? – Lerner
是的你是对的。我没有看到代码是'context.Periods.Remove(XX)'。我们无法在'foreach'中将项目添加/删除到集合中。 – Rang