前几天有人问我多线程方面的东西,写了怎么久的程序,我一直用(.net 1.1)在asp.net一直没用过多线程的代码。
说实话,我一直不知道多线程在asp.net能做什么方面的应用。我现在程序都是 get post 提交参数,代码中向数据库或向网页请求,产生结果返回给调用者或页面呈现,就这样我实现想不到哪里需要用多线程。在我看来客户端请求的东西,用单线程已完全行了,多线程能增加什么呢,或哪里一定要用它呢。

解决方案 »

  1.   

    两种模式:WebService和Web多线程
      

  2.   

    web的程序一般用得比较少,适用处理比较大量的数据,使用多个线程处理,但要注意线程同步的问题,主线程不能直接返回.否则后面的处理无法控制
      

  3.   

    在许多常见的情况下,可以使用多线程处理来显著提高应用程序的响应能力和可用性。应该慎重考虑使用多线程来: 通过网络(例如,与 Web 服务器、数据库或远程对象)进行通信。 执行需要较长时间因而可能导致 UI 冻结的本地操作。 区分各种优先级的任务。 提高应用程序启动和初始化的性能。 非常详细地分析这些使用情况是非常有用的。
      

  4.   

    asp.net一般不推荐使用多线程.因为大部分的配置是会回收AppDomain的.
      

  5.   

    有什么高级web应用,会用到多线程我也想看看
      

  6.   

    多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
    多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能。
    直接创建Thread对象,并且调用它的Start方法
    使用ThreadPool.QueueUserWorkItem方法
    使用BackgroundWorkerstatic void Main(string[] args)
            {
                Thread thread = new Thread(new ParameterizedThreadStart(SomeMethod));
              thread.Start(100);
                ThreadPool.QueueUserWorkItem(new WaitCallback(SomeMethod), 100);
                 BackgroundWorker worker = new BackgroundWorker();
                worker.DoWork += new DoWorkEventHandler(worker_DoWork);
                worker.RunWorkerAsync();
                Console.Read();
            } 
            static void worker_DoWork(object sender, DoWorkEventArgs e)
            {
                SomeMethod(100);
            } 
            static void SomeMethod(object max)
            {
                int length = (int)max;
                for (int i = 0; i < length; i++)
                {
                    Console.WriteLine(i.ToString());
                }
            }多线程总结
      

  7.   

    看了一些多线程的代码,我大致知道怎么用了,我是想问的实际中web哪些地方用了多线程,举点例子,让我也理解理解
      

  8.   

    asp.net本身就是多线程处理的
    但是你的程序没必要用什么多线程多线程是为了增加CPU的利用率,避免等待慢速操作造成的CPU闲置
    还有可能是为了方便控制
    除这两点之外没啥别的用处了
    滥用只会增加资源占用~
      

  9.   

    一般在等待网络、IO等慢速操作时,CPU不能做任何事情,只能等待
    这往往造成了CPU资源的闲置浪费,多线程运行就可以避免这种情况
    当某个线程在等待时,总有其他的线程在运行~
      

  10.   

    web程序很少涉及到多线程,因为根据web机制,通讯这一层是由浏览器来完成的,所以也是由浏览器来解决线程问题的
    虽然.net在web里也可以用多线程,但设计不好反而会降低性能,严重的会死机
      

  11.   

    没必要吧,web server和app server本身都是多线程
      

  12.   

    需要用的时候自然会用到,比如今天交给你的任务是:
    * 同时给1000个人发邮件
    * 把100万条数据导出到excel文件
    * 定时清理服务器上的临时文件
    ...
      

  13.   

    比如说, 你要做个生成游戏充值卡卡号密码的操作, 前台操作就是提交一个卡的数量, 100万? 然后就是服务器在那里拼死命的循环, 此时, 你想在WEB上看到什么? 永无止境的等待? 还是该干嘛干嘛去?使用多线程, 你就可以把这个耗时的循环搞到后台线程处理了, WEB页面立即返回, 直接告诉你我已经叫别人帮我干活了, 你还有什么事尽管放马过来.......
      

  14.   

    还有像CSDN论坛这种每天定时给前一天回贴用户加可用分的, 如果没用到其它服务程序的话, 也可以在ASP.NET程序中新建一个线程干这活, 并不会影响到前台用户的访问.
      

  15.   

    我指的是自己开线程在后台做长时间的处理数据等工作。这也是大部分情况下想在ASP.NET里自己开线程想做的事情。而w3wp进程会因为各种原因导致AppDomain回收,甚至由于Application Pool回收导致进程终止,所以一般都不推荐直接在ASP.NET程序里这么做。