我在我的应用程序中的非GUI线程中运行了以下方法:
private async Task PerformContextSubmitAsync()
{
try
{
await DataContextProvider.GetDefaultContext().SaveChangesAsync();
}
catch (Exception ex)
{
Log.Error("Error performing context submit", ex);
}
}
这被称为:
await PerformContextSubmitAsync();
这个应用程序是基于WPF/Prism的,因此我也会发布事件来更新GUI中的进度条和文件计数,例如:
_eventAggregator.GetEvent<DatabaseProgressEvent>().Publish(new DatabaseProgress(percentDone));
一切都按预期工作,唯一的问题是仍有“分块”效应在UI更新中并行调用SaveChangesAsync()。基本上这仍会阻塞正在执行的线程。这是否是SQL Server CE的限制还是我的某些愚蠢操作?我在谷歌上没有找到太多有关此事的信息,在SO上也没有。