【发布时间】:2012-05-08 16:12:50
【问题描述】:
显然,我不明白如何使用 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 中调用此方法。
我在这里做错了什么?
【问题讨论】:
-
这是因为您正在执行异步操作。
-
另外,除了任务是异步的之外,我认为它们甚至都没有启动。
标签: c# task asp.net-web-api