Mam zadanie jak poniżej.Task.wait i kontynuacja
var task = Task<string>.Factory.StartNew(() => longrunningmethod()
.ContinueWith(a =>
longrunningmethodcompleted((Task<string>)a,
TaskScheduler.FromCurrentSynchronizationContext())));
task.Wait();
Moje zadanie wywoła metodę longrunning, a po jej zakończeniu wywoła metodę zakończoną. Wewnątrz mojego longrunningmethod opóźniam o Thread.Sleep(30000)
. Kiedy używam systemu Task.wait zawiesza się i nie wywołuje metody longrunningmethodcompleted. Jeśli nie używam Task.wait, wszystko przepływa dobrze.
Brzmi dla mnie jak zakleszczenie, czy robisz to w środowisku z pojedynczym gwintem? Widziałem to już wcześniej w rozwoju Windows Phone. ([related] (http://stackoverflow.com/questions/8277291/continuation-tasks-hanging-when-using-limitedconcurrencyleveltaskscheduler)) –