请问,用BeginInvoke开启后台线程,怎么要等到EndInvoke程序在往下走?        Email email = new Email();//发送邮件类
        MethodCaller mc = new MethodCaller(email.email);
        IAsyncResult result;
        bool r = false;
         AutoResetEvent ev = new AutoResetEvent(false);
        result = mc.BeginInvoke(email1, email2, empname, body, subject, null, ev);
        r = mc.EndInvoke(result);        string a= "继续";就是说要等r得到返回值才走到a="继续"。 如何能进去后让他自己跑,不影响主程序往下?beginivoke

解决方案 »

  1.   

    BackgroundWorker让它在后台跑
      

  2.   

    我是网页的后台,有交互,需要速度ajax返回,还有其他建议吗?
      

  3.   

    委托+BeginInvoke+回调,具体参见MSDN异步编程模式
      

  4.   

    http://www.cnblogs.com/eric_ibm/archive/2013/03/18/Invoke.html
      

  5.   

    你前后两个说法,完全是自相矛盾。既然是阻塞在那里、“等到执行结束”才返回ajax,有搞什么线程呢?没听说额外地搞一个线程反而会得到“速度返回”的。你应该理解线程,再用它。
      

  6.   

    是我讲的不好,我那个线程其实不需要返回,就是到得到邮件地址后,开辟出一个线程去发邮件,不需要返回。 然后我后台主线程继续执行,快速ajax返回给前台页面。
      

  7.   


    谢谢,我理解了。我不要返回值,只要不接受返回值就可以了。原来它一直在等返回值,才慢的
    //r = mc.EndInvoke(result);//用于接收返回值 也谢谢sp1234 的批评。一直给我们帮助