Task.ContinueWith порядок выполнения

Видимо, я не понимаю, как использовать метод 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.)

Этот метод вызывается в моем контроллере веб-API ASP.NET/Ajax POST.

Что я здесь делаю не так?

5
задан Rivka 8 May 2012 в 16:12
поделиться