有一个流程:非主线程发httpwebrequest,在其异步回调中,通过代理通知已拿到response,想在代理方法中继续发请求,然后回调里继续通知,代理继续发请求这样一直做会不会就产生N多线程,导致我主线程无法停止这个流程。
其实想做的就是一个接一个(前一个结束后一个发)的发请求,并且主线程可以控制流程的启动和停止。
本人愚钝,想了很久没想到好的解决办法,望高人点拨一二。多线程HttpWebRequest

解决方案 »

  1.   

    你说的代理是什么意思?委托?不清楚为什么要用代理通知主进程回调线程是否结束。感觉麻烦了。你主进程执行回调方法,也就是开了一个子线程去执行回调方法。你只要用一个ManualResetEvent类,实例化一个对象(event),通过控制event来使两个线程达到同步。
      

  2.   

    1.异步编程不是通过多线程实现的,所以你不用担心会产生很多线程
    2.就算每次异步请求会产生一个线程,那么你进行下一次异步请求之后,原来的线程肯定会执行结束
    3.加一个标志,作为结束标志,以Socket.BeginAccept为例:
      
      socket.BeginAccept(...,new AsyncCallBack(OnAccept),...);
      private void OnAccept(IAsyncResult ar)
      {
           Socket newClient = socket.EndAccept(ar);
           if(flag) //继续侦听
           {
                socket.BeginAccept(...,new AsyncCallBack(OnAccept),...);
           }
           //否则 侦听过程结束
      }4.可以把异步看做多线程,但内部主要不是通过多线程实现的。也就是说,你BeginAccept 100次,不一定有100个线程产生,没有一对一的关系