我正在听取有关多线程/网络服务的一些建议,以及我是否应该使用其中一个解决我的问题。
我的c#asp网站上有一个按钮,它会执行一堆api调用,这个过程可能需要几分钟。 我希望将此过程分开,以便它可以在后台执行,并且不会破坏用户体验。 这个过程非常适合我当前的项目,因此将代码拆分为单独的Web服务项目并不容易。
所以..
Thread thread = new Thread(new ThreadStart(RefreshData));
如果上述方法不起作用,我可以通过在同一个项目中添加一些[Web方法]来完成这项工作,并从同一个项目中调用它们吗? (如果是的话 - 任何提示?)
如果我这样做,它会在另一个iis线程中成功执行吗?即..如果用户杀死他们的浏览器 - 我能确定该服务的流程能否顺利完成?
此外,我计划在AWS上托管该网站 - 因此,如果从这个角度考虑,任何见解也会有所帮助。
先谢谢帮派..
答案 0 :(得分:1)
您可以运行后台线程。即使访问者关闭浏览器窗口,它们也会运行。您可以使用会话/ cookie将这些线程/工作负载与访问者相关联,因此即使他们重新访问网站,他们也可以了解进度。
您必须注意的是保持Web服务器进程不被回收。默认情况下会在某个超时或生命周期后发生。您必须更改相关设置。
另外,保留对您创建的线程的永久引用,以防止它被垃圾收集。