Web环境中线程的注意事项

时间:2009-11-15 06:07:40

标签: asp.net multithreading

我开始使用ASP.NET Web开发,并且想知道多线程化标准winforms应用程序与使用IIS运行的基于Web的应用程序进行多线程的差异。是否存在任何差异,如果有,那么线程化Web应用程序的限制(以及相反的任何积极因素), 提前谢谢

2 个答案:

答案 0 :(得分:3)

在Windows GUI世界中,您始终拥有可用于与用户通信的“UI线程”。例如,您可以在UI线程中启动BackgroundWorker,这将在完成其工作后在UI线程中引发事件:在Windows UI应用程序中,您可以非常确定UI线程仍然存在,除非用户已关闭该应用程序。

在网络世界中,您没有等效的主线程。只有网络请求:有时没有,有时同时有很多;甚至有可能在没有您知道的情况下,多个线程将处理一个单独的请求。如果您使用冗长的操作启动后台线程,则需要

  • 延迟完成Web请求,直到后台线程完成 - 这意味着用户的响应时间很慢,并以某种方式违背后台线程的目的或
  • 定期(在将来的请求期间)检查线程的状态,并在完成后通知用户。

当然,如果您想在线程完成后进行一些用户交互,那么这只是一个问题。如果你不这样做,只需启动它,它最终会完成(除非有人重新启动IIS)。

答案 1 :(得分:0)

线程在网络世界中并不是一个真正的问题。没有任何状态,每个请求都是网页的新实例。有一些方法可以跟踪cookie,sessionstate,viewstate等请求之间的状态。