Вызов метода после ActionResult в .NET Core - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в MVC, поэтому мое мышление может быть совершенно неверным, но я хотел бы достичь, когда я вызываю действие в контроллере, как только он возвращает результат, будет вызван другой метод.

В настоящее время мой код работает следующим образом:

[HttpGet("/api/compile/{*path}")]
public IActionResult Compile(string path)
{
    this.Queue.QueueBackgroundWorkItem(async token =>
    {
        await cp.Compile()
                .ContinueWith((compilation) =>
                    Console.WriteLine(compilation.Result), token);
    });

    return new ContentResult
    {
        Content = "<div>Compilation requested...</div>",
        ContentType = "text/html"
    };
}

Он работает, как и ожидалось, фоновое задание было поставлено в очередь и будет возвращен результат содержимого.

Моя проблема в том, чтоесли я проверяю журнал консоли, конечно, по разумной причине, фоновое задание начинает входить в консоль раньше, чем будет возвращен контент-результат, так что я вижу:

backgroundjob log...1
backgroundjob log...2
[compilation.Result]
backgroundjob log...3
backgroundjob log...4
...

Но я бы хотелдостичь, что фоновое задание будет поставлено в очередь строго после возврата результата.

[compilation.Result]
backgroundjob log...1
backgroundjob log...2
backgroundjob log...3
backgroundjob log...4
...

Может быть, я могу добавить Thread.Sleep в анонимный метод фонового задания, но, конечно, это не согласованно и хорошологический путь, но в настоящее время я не знаю, как я могу решить эту проблему.

Спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...