c#asp多线程或Web方法

时间:2018-05-30 03:14:47

标签: c# multithreading amazon-web-services webmethod

我正在听取有关多线程/网络服务的一些建议,以及我是否应该使用其中一个解决我的问题。

我的c#asp网站上有一个按钮,它会执行一堆api调用,这个过程可能需要几分钟。 我希望将此过程分开,以便它可以在后台执行,并且不会破坏用户体验。 这个过程非常适合我当前的项目,因此将代码拆分为单独的Web服务项目并不容易。

所以..

  1. 如果我运行以下线程代码,如果用户杀死浏览器,它会成功执行吗?我的问题/考虑是什么?
  2. Thread thread = new Thread(new ThreadStart(RefreshData));

    1. 如果上述方法不起作用,我可以通过在同一个项目中添加一些[Web方法]来完成这项工作,并从同一个项目中调用它们吗? (如果是的话 - 任何提示?)

    2. 如果我这样做,它会在另一个iis线程中成功执行吗?即..如果用户杀死他们的浏览器 - 我能确定该服务的流程能否顺利完成?

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

      先谢谢帮派..

1 个答案:

答案 0 :(得分:1)

您可以运行后台线程。即使访问者关闭浏览器窗口,它们也会运行。您可以使用会话/ cookie将这些线程/工作负载与访问者相关联,因此即使他们重新访问网站,他们也可以了解进度。

您必须注意的是保持Web服务器进程不被回收。默认情况下会在某个超时或生命周期后发生。您必须更改相关设置。

另外,保留对您创建的线程的永久引用,以防止它被垃圾收集。