Я пытаюсь начать использовать методы async в .net 4.5, и я подумал, что я это понял, но теперь, когда я пытаюсь сделать это в func, но я не могу получить следующее работать:async lambda не возвращается до ожидаемого метода возвращает
Action task = async() =>
{
await _db.SaveChangesAsync();
Debug.WriteLine("Save completed");
};
task();
Debug.WriteLine("Returned");
выход будет: Сохранить завершен возвращенный
Я ожидал, что это будет в обратном порядке.
Любые идеи?
Спасибо!
Edit 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();
}
}
}
Однако, я не могу сделать тот же самый код работайте в моем живом коде. Код является частью дополнения к коммерческому инструменту, может ли он каким-то образом его блокировать?
Что вы подразумеваете под словом «Я не могу заставить следующее работать»? Непонятно, чего вы пытаетесь достичь, чего вы ожидаете, что на самом деле происходит, или какого контекста вы находитесь (консольное приложение, веб-приложение, winforms/wpf app). –
Извините, Джон, я случайно отправил его, прежде чем я закончил с ним, пока я добавлял теги. – Erik83
Хорошо, так что делает 'SaveChangesAsync'? (Например, это EF?) Можете ли вы опубликовать короткую, но полную * программу, демонстрирующую проблему? –