首页 新闻 会员 周边

Entity Framework中的async/await异步问题

0
悬赏园豆:30 [已解决问题] 解决于 2016-07-13 16:18

错误信息如下:

A second operation started on this context before a previous asynchronous operation completed. Use 'await' to ensure that any asynchronous operations have completed before calling another method on this context. Any instance members are not guaranteed to be thread safe.

请问如何解决这个问题?

ef
问题补充:

是在这段代码中出现这个问题的:

foreach (var doc in docs)
{
    //_tagService中用到了EF
    var tags = await _tagService.GetTagsString(doc.Id);
}
dudu的主页 dudu | 高人七级 | 园豆:30943
提问于:2016-07-13 12:12
< >
分享
最佳答案
0

问题是发生在这段代码中:

foreach (var doc in docs)
{
    var tags = await _tagService.GetTagsString(doc.Id);
}

在_tagService中用到了EF,_tagService中的DbContext实例是通过_tagService的构造函数注入的,所以在foreach循环中始终用的是同一个DbContext实例,而提问中的异常就是因为这个引发的。

只要避免在多次await时使用同一个DbContext实例,就能避开这个问题。

dudu | 高人七级 |园豆:30943 | 2016-07-13 16:17

自问自答 还不要园豆 给赞~

小刺猬001 | 园豆:660 (小虾三级) | 2016-07-14 08:43

@小刺猬001: 规则所限,园豆不能给自己

dudu | 园豆:30943 (高人七级) | 2016-07-14 09:40

@dudu: 原来如此。

小刺猬001 | 园豆:660 (小虾三级) | 2016-07-14 10:48
其他回答(1)
0

帮园长搜到了http://www.cnblogs.com/xishuai/p/ef-dbcontext-thread-safe.html   话说我没用过await。。。

收获园豆:30
顾晓北 | 园豆:10844 (专家六级) | 2016-07-13 14:02

30个豆  (*@ο@*) 哇~

支持(0) 反对(0) 小刺猬001 | 园豆:660 (小虾三级) | 2016-07-14 08:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册