【问题标题】:Running long-time background task in a separate background thread vs process在单独的后台线程与进程中运行长时间后台任务
【发布时间】:2018-02-05 11:04:39
【问题描述】:

我正在构建一个 ASP.NET Core Web 应用程序,我需要运行一些复杂的任务,这些任务需要相当长的时间才能完成,从几秒到几分钟不等。用户不必等到完成任务运行,但不知何故我需要用任务的进度更新 UI。我正在考虑在 ASP.NET 服务器中处理此问题的两种方法:一种是使用后台线程,另一种是使用单独的进程。我不希望长时间运行的任务以任何方式妨碍 Web 应用程序。与进程相比,使用线程是安全的选择吗?还是在单独的进程中运行这些任务是更好更有效的方式?

【问题讨论】:

    标签: c# asp.net multithreading asp.net-core-1.0


    【解决方案1】:

    我会说在另一个过程中进行。将其放入队列中,并让一个单独的进程处理该队列,并在完成后通过发布作业完成消息或其他内容向 Web 应用程序发出信号。

    如果您在 Web 应用程序中使用常规线程并且服务器在进程中间关闭,或者 Web 应用程序被回收,您可能会得到一些不良影响。

    概述了其他一些选项here

    【讨论】:

      【解决方案2】:

      您应该换个思路,在这种情况下,请始终考虑像 signalR 这样的实时通知方法,您可以通过它触发您的请求,而您不必再担心它,一旦完成,它会向您的应用发出信号,您将可以访问您可以根据您的业务操作的所有数据。访问此链接以获取更多信息An Introduction to SignalR

      【讨论】:

        猜你喜欢
        • 2012-01-14
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-26
        • 2018-01-12
        • 2017-12-14
        • 1970-01-01
        相关资源
        最近更新 更多