运行 单独的后台线程与进程中的长时间后台任务
Running long-time background task in a separate background thread vs process
我正在构建一个 ASP.NET 核心 Web 应用程序,我需要 运行 一些复杂的任务,这些任务需要相当长的时间才能完成,从几秒钟到几分钟不等。用户不必等到完成任务 运行 秒,但我需要用任务的进度更新 UI。我正在考虑在 ASP.NET 服务器中处理此问题的两种方法:一种是使用后台线程,另一种是使用单独的进程。我不希望冗长的 运行ning 任务以任何方式妨碍 Web 应用程序。与进程相比,使用线程是安全的选择吗?或者 运行将这些任务放在一个单独的进程中是一种更好、更有效的方法?
我会说在另一个过程中进行。将其放入队列中,并让一个单独的进程处理该队列,并在完成后通过发布作业完成消息或其他方式向网络应用程序发出信号。
如果您在 Web 应用程序中使用常规线程并且服务器在进程中间关闭,或者 Web 应用程序被回收,您可能会遇到一些不良影响。
概述了其他一些选项here
你应该有不同的想法,在这种情况下,总是考虑像 signalR 这样的实时通知方法,你可以通过它来触发你的请求,你不必再担心它,一旦完成它就会向你的应用发出信号,你您将有权访问您可以根据您的业务操作的所有数据。访问此 link 了解更多信息 An Introduction to SignalR
我正在构建一个 ASP.NET 核心 Web 应用程序,我需要 运行 一些复杂的任务,这些任务需要相当长的时间才能完成,从几秒钟到几分钟不等。用户不必等到完成任务 运行 秒,但我需要用任务的进度更新 UI。我正在考虑在 ASP.NET 服务器中处理此问题的两种方法:一种是使用后台线程,另一种是使用单独的进程。我不希望冗长的 运行ning 任务以任何方式妨碍 Web 应用程序。与进程相比,使用线程是安全的选择吗?或者 运行将这些任务放在一个单独的进程中是一种更好、更有效的方法?
我会说在另一个过程中进行。将其放入队列中,并让一个单独的进程处理该队列,并在完成后通过发布作业完成消息或其他方式向网络应用程序发出信号。
如果您在 Web 应用程序中使用常规线程并且服务器在进程中间关闭,或者 Web 应用程序被回收,您可能会遇到一些不良影响。
概述了其他一些选项here
你应该有不同的想法,在这种情况下,总是考虑像 signalR 这样的实时通知方法,你可以通过它来触发你的请求,你不必再担心它,一旦完成它就会向你的应用发出信号,你您将有权访问您可以根据您的业务操作的所有数据。访问此 link 了解更多信息 An Introduction to SignalR