我想出去一個網關,獲取數據,然後在UI線程上返回。 ContinueWith運行,但網關從來沒有?Task.Factory.StartNew無法啓動?
ILogonResult result;
Task.Factory
.StartNew(() =>
{
result = Gateway.Authenticate(a, b);
})
.ContinueWith(task =>
{
TaskScheduler.FromCurrentSynchronizationContext();
DoSomeUI(result);
}
);
的背景是在一個錯誤的地方在這裏,應該是在'ContinueWith' ... – 2013-05-09 18:33:13
參數我看到很多在這裏的問題,但真的有沒有足夠的信息來回答你的問題。 1)你不應該在任務中設置一個'result'變量,你應該返回結果;然後繼續可以從'task.Result'讀取值。 2)你的'fromUIContext'在錯誤的地方;您希望它作爲「ContinueWith」的第二個參數來使UI線程中的延續運行。 'DoSomeUI'也應該被賦予任務的結果作爲參數。另外,Result的類型是什麼?不知道用'Authenticate'來說可能會發生什麼很難說。 – Servy 2013-05-09 18:33:43
另外,我打算用我的心理調試技術來說'結果'是一個'任務',並且你開始了一個任務,開始一項任務;它在完成任務開始時完成,而不是當它開始的任務實際完成時完成,這就是繼續似乎馬上運行的原因。 –
Servy
2013-05-09 18:34:59