首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >异步ObjectContext.SaveChanges()?

异步ObjectContext.SaveChanges()?
EN

Stack Overflow用户
提问于 2009-07-23 13:22:08
回答 2查看 4.4K关注 0票数 3

我希望ObjectContext (Win应用程序)的SaveChanges异步保存更改,是否会显示字幕(或可控?)进度条(这我可以很容易地实现)为用户,而他能够继续工作。

我基本上是想覆盖ObjectContextSaveChanges

以前有没有人想过这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-04 14:08:54

编辑于2013-03-12:

由于一些人开始否定这个答案,我猜,出于某种原因,这个解决方案不再是好的。

请不要因为这个而贬低答案。总是以温和的评论开始,说明你为什么不喜欢这个答案。

我相信你需要使用Asynchronous Delegates。它基本上是这样工作的:

通过要调用的方法来创建委托asynchronously;

  • You marquee);

  • You
  1. BeginInvoke,启动调用;
  2. 您可以执行其他任何您需要做的操作(例如,动画marquee);
  3. You可以等待异步调用完成,或者检查是否已完成,如果未完成,则继续动画字幕;
票数 2
EN

Stack Overflow用户

发布于 2012-06-04 03:15:03

Entity Framework本身目前不支持异步操作。主要是因为它构建在ADO.NET之上,而这一点也不受支持。默认情况下,ADO.NET甚至不是线程安全的。

您可以使用上面的委托方法或将其包装到Task中。但这将不会使用任何异步调用,即使提供程序支持它。此外,在这个“后台”操作期间,您不应该对ObjectContext做任何事情(查询、添加对象等)。因为可能导致损坏状态。

关于多线程,你可以阅读this的帖子。它是旧的,但想法仍然有效。

编辑2013-04-17:

EF6 (下一版本,目前在编写时处于alpha阶段)将支持异步操作,即您请求的SaveChangesAsync。它还扩展了ADO.NET模型,所以如果提供者本身支持异步执行,那么它将是真正的异步(否则回到以前的行为,因为没有更好的(明智的)方法)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1171677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档