解决方案 »

  1.   

    .net框架,为什么要开线程,什么功能?
      

  2.   

    .net中慎用static
    因为声明为static之后,所有用户都用的同一个对象了
      

  3.   

    用ManualResetEvent或AutoResetEvent,在线程里需要等待输入的地方用WaitOne()阻塞线程,用户输入完成就Set()
      

  4.   

    类似于工作流引擎的东西,多个事件而且需要自动并发执行,所以我开了线程,如果不能static,那有什么好的方法没?
      

  5.   

    page_load完成后让线程睡眠,用户点击后thread.start()
      

  6.   

    不是这样的,原本用户输入是一个流程的一个步骤,等用户输入了,我才能继续完成这个步骤,然后进入下一步骤,一个步骤为一个线程,现在线程已经开始,只是需要阻塞等结果,但是在BLL我获取不了页面上用户输入的东西,所以就在页面对应的xxxx.aspx.cs获取,处理了在返回个结果给BLL的某个全局static变量,然后线程一直在查询这个变量,找到有结果才跳出循环进入下一步,现在问题是要换种方法,求教
      

  7.   

    问题是线程不是在xxx.aspx.cs文件启动的,是在BLL的某个类里面启动的,而且要求是启动之后执行一些语句然后阻塞,等待用户输入再执行剩下语句,有办法么
      

  8.   

    谢谢,还是有疑问,项目是层次结构的,用户输入在USL层,BLL层的线程调用WaitOne()后,USL层有了结果怎么使用set()让线程继续执行?因为是多线程,每个线程都执行一个事件,有可能在同一时间存在多个事件都是需要阻塞等待用户输入的,怎么找出正确的线程并启动呢?
      

  9.   

    有多个线程的话,就用数组            ManualResetEvent[] man = new ManualResetEvent[n];
                //你的代码段...
                //完成操作的线程就调用Set()            WaitHandle.WaitAll(man); //等待输入的线程调用WaitAll