PerformContextSubmitAsync

PerformContextSubmitAsync

我在应用程序的非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的限制吗,还是我做的事真的很愚蠢?

对于这次搜索Google,我几乎找不到任何东西,因此一无所获。

最佳答案

经过更多测试后,我似乎不应该在他对await方法的调用中使用async关键字。

执行这样的调用:

Task.Run(() => PerformContextSubmitAsync());

不会阻塞原始的调用线程,但是它似乎实际上并没有以异步方式执行。它的行为似乎更像是将执行推迟到将来的某个时间点。

10-06 04:53