どうやら、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.";
}
}
変数 "filename" は常に "Not set" を返します。ContinueWith メソッド内のコードが呼び出されないようです。(VSで1行ずつデバッグすると呼び出されます。)
このメソッドは、ASP.NET Web API コントローラー/Ajax POST で呼び出されています。
ここで何が間違っていますか?