Задача: запустить долго работающий метод WCF, а затем вернуть JSON об успешном запуске.
Я пробовал Task.Run (как с прямым, так и с асинхронным вызовом) и HostingEnvironment.QueueBackgroundWorkItem, а на стороне WCF мы обнаруживаем запуск метода, все в порядке, но на стороне MVC действие выполняется намного дольше, чем нужно (например, несколько минут), как прямой вызов службы.
Итак, теперь такой код
public virtual JsonResult RunSomeTask(string data)
{
Task.Run(() => ourService.LongRunningOne());
//or
Task.Run(() => ourService.LongRunningOneAsync());
//or
HostingEnvironment.QueueBackgroundWorkItem((ct) => ourService.LongRunningOne());
//or
HostingEnvironment.QueueBackgroundWorkItem((ct) => {
ourService.LongRunningOneAsync();
});
return Json(new{message = "started"});
}
, и он работает так, будто просто ожидает завершения вызова службы.
Что я делаю не так?