猿问

c#asp多线程或web方法

我正在寻求有关多线程/网络服务的一些建议,以及我是否应该/如何使用其中之一来解决我的问题。

我的 c# asp 站点上有一个按钮可以执行一堆 api 调用,这个过程可能需要几分钟。我想把这个过程分开,这样它就可以“在后台”执行并且不会影响用户体验。该过程与我当前的项目紧密相连,因此将代码拆分为单独的 Web 服务项目并不容易。

所以..

  1. 如果我运行以下线程代码,如果用户杀死浏览器,它是否会成功执行?我的问题/考虑是什么?

线程线程 = new Thread(new ThreadStart(RefreshData));

  1. 如果上述方法不起作用,我可以通过向同一个项目添加一些 [web 方法] 并从同一个项目中调用它们来完成这项工作吗?(如果是这样 - 有什么提示吗?)

  2. 如果我这样做,它会在另一个 iis 线程中成功执行它们吗?即..如果用户关闭了他们的浏览器 - 我可以确定该服务的进程会成功完成吗?

此外,我计划在 AWS 上托管该网站 - 因此,如果从这个角度考虑,任何见解也会有所帮助。

在此先感谢帮派..


慕桂英3389331
浏览 268回答 1
1回答

绝地无双

您可以运行后台线程。即使访问者关闭了浏览器窗口,它们也会运行。您可以使用会话/cookie 将这些线程/工作负载与访问者相关联,因此即使他们重新访问网站后,他们也可以了解进度。您需要注意的是防止 Web 服务器进程被回收。默认情况下,这会在某个超时或生命周期之后发生。您必须更改相关设置。此外,保留对您创建的线程的永久引用,以防止它被垃圾收集。
随时随地看视频慕课网APP
我要回答