顯然,我不理解如何使用ContinueWith方法。我的目標是執行任務,完成後返回消息。Task.ContinueWith執行順序
這裏是我的代碼:
public string UploadFile()
{
if (Request.Content.IsMimeMultipartContent())
{
//Save file
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(HttpContext.Current.Server.MapPath("~/Files"));
Task<IEnumerable<HttpContent>> task = Request.Content.ReadAsMultipartAsync(provider);
string filename = "Not set";
task.ContinueWith(o =>
{
//File name
filename = provider.BodyPartFileNames.First().Value;
}, TaskScheduler.FromCurrentSynchronizationContext());
return filename;
}
else
{
return "Invalid.";
}
}
變量 「文件名」 總是返回 「未設置」。看起來ContinueWith方法內的代碼永遠不會被調用。 (如果我在VS中逐行進行調試,它確實會被調用。)
在我的ASP.NET Web API控制器/ Ajax POST中調用此方法。
我在這裏做錯了什麼?
這是因爲你正在做一個異步操作。 –
另外,除了任務是異步的,我認爲他們甚至沒有開始。 – GolfWolf