gpt4 book ai didi

c# - EntityFramework (6) 和异步(waitingForActivation)?

转载 作者:太空宇宙 更新时间:2023-11-03 19:15:10 25 4
gpt4 key购买 nike

我已经下载了 EF6 (为了使用 async)

所以我写了这个简单的方法:

  public async Task<List<int>> MyasyncMethod()
{
var locations = await MyDumpEntities.AgeGroups.Select(f=>f.endYear).ToListAsync();
return locations;
}

...Later...


DumpEntities1 MyDumpEntities = new DumpEntities1();
var data = MyDumpEntities.AgeGroups.ToListAsync();
MyasyncMethod().ContinueWith(s => { Response.Write("f"); });
MyDumpEntities.Dispose();

但是我在屏幕上看不到任何东西,当我检查 data 时,我看到了这个:

enter image description here

附注这是 ToListAsync 签名 enter image description here

我错过了什么?

最佳答案

基于评论和您有问题的行:

var data = MyDumpEntities.AgeGroups.ToListAsync();

什么会data类型是? Task<List<AgeGroup>> .没错,不是List<AgeGroup> .所以,你要么必须标记 Page_Load作为异步(如果可能):

public async void Page_Load(object sender, EventArgs e)
{
using(var MyDumpEntities = new DumpEntities1())
{
var data = await MyDumpEntities.AgeGroups.ToListAsync();
}
}

或者以某种方式等待执行(继续,阻塞等待)。

另一件事(如果我错了,其他人可能会更正),但由于您在第二次调用中使用延续,所以我会非常小心地处理延续之外的上下文。结果可能是您先发制人地处置了上下文。在这种特殊情况下,您没有在延续中使用上下文,但它看起来很可疑......

所以我要么

MyasyncMethod().ContinueWith(s => { Response.Write("f"); MyDumpEntities.Dispose();});

或者只使用 async还有

var result = await MyasyncMethod();
Response.Write("f");
MyDumpEntities.Dispose();

并添加Async="True"到页面指令

关于c# - EntityFramework (6) 和异步(waitingForActivation)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com