我试图开始使用.net 4.5中的异步方法,我想我已经想通了,但现在当我试图在func中做到这一点,但我不能得到以下内容工作:async lambda在等待方法返回前没有返回
Action task = async() =>
{
await _db.SaveChangesAsync();
Debug.WriteLine("Save completed");
};
task();
Debug.WriteLine("Returned");
输出将是: 保存完成 返回
我希望它是相反的顺序。
任何想法?
谢谢!
编辑1:
我创建了一个示例代码,以显示我想要的东西,而奇怪的是,它完美的作品:
static void Main(string[] args)
{
using (BCFdbEntities db = new BCFdbEntities())
{
IssueComment ic = db.IssueComments.First();
ic.Comment = DateTime.Now.ToString() ;
Action a = async() =>
{
await db.SaveChangesAsync();
Console.WriteLine("Save completed");
};
a();
Console.WriteLine("Returned");
Console.ReadLine();
}
}
}
但是,我不能让完全相同的代码在我的实时代码中工作。 该代码是商业工具插件的一部分,他们是否可以阻止它?
你是什么意思的“我不能得到以下工作”?目前还不清楚你想要实现什么,你期望发生什么,实际发生了什么,或者你正在使用什么上下文(控制台应用程序,Web应用程序,winforms/wpf应用程序)。 –
对不起,约翰,我无意中发布它之前,我已经完成了它,而我是插件标签。 – Erik83
好吧,SaveChangesAsync是做什么的? (这是EF例如?)你可以发布一个简短的,但*完整的*程序展示问题? –