.NET Core中ActionResult之后的调用方法

时间:2018-10-19 18:00:18

标签: c# asp.net-core-mvc

我是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"
    };
}

工作正常,后台作业已入队,内容结果将返回。

我的问题是,如果我出于合理的原因检查控制台日志,则后台作业会在返回contentresult之前开始在控制台中进行日志记录,所以我看到的是

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,但是这当然不是一致的逻辑方法,但目前我不知道该如何解决。

谢谢您的帮助!

0 个答案:

没有答案