当前位置:编程学习 > C#/ASP.NET >>

BeginInvoke 开启线程问题

请问,用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 --------------------编程问答-------------------- 用BackgroundWorker让它在后台跑
--------------------编程问答-------------------- 我是网页的后台,有交互,需要速度ajax返回,还有其他建议吗? --------------------编程问答-------------------- 委托+BeginInvoke+回调,具体参见MSDN异步编程模式 --------------------编程问答-------------------- http://www.cnblogs.com/eric_ibm/archive/2013/03/18/Invoke.html --------------------编程问答--------------------
引用 楼主 kaizi_sun 的回复:
就是说要等r得到返回值才走到a="继续"。 如何能进去后让他自己跑,不影响主程序往下?

这不是闲的没事干才想到的主意嘛。既然要循环、阻塞在那里,你有何必额外地搞什么线程?直接顺序执行不就行了嘛。 --------------------编程问答--------------------
引用 2 楼 kaizi_sun 的回复:
我是网页的后台,有交互,需要速度ajax返回,还有其他建议吗?

你前后两个说法,完全是自相矛盾。

既然是阻塞在那里、“等到执行结束”才返回ajax,有搞什么线程呢?

没听说额外地搞一个线程反而会得到“速度返回”的。你应该理解线程,再用它。 --------------------编程问答--------------------
引用 6 楼 sp1234 的回复:
引用 2 楼 kaizi_sun 的回复:我是网页的后台,有交互,需要速度ajax返回,还有其他建议吗?
你前后两个说法,完全是自相矛盾。

既然是阻塞在那里、“等到执行结束”才返回ajax,有搞什么线程呢?

没听说额外地搞一个线程反而会得到“速度返回”的。你应该理解线程,再用它。


引用 6 楼 sp1234 的回复:
引用 2 楼 kaizi_sun 的回复:我是网页的后台,有交互,需要速度ajax返回,还有其他建议吗?
你前后两个说法,完全是自相矛盾。

既然是阻塞在那里、“等到执行结束”才返回ajax,有搞什么线程呢?

没听说额外地搞一个线程反而会得到“速度返回”的。你应该理解线程,再用它。


是我讲的不好,我那个线程其实不需要返回,就是到得到邮件地址后,开辟出一个线程去发邮件,不需要返回。 然后我后台主线程继续执行,快速ajax返回给前台页面。 --------------------编程问答--------------------
引用 4 楼 Dersak 的回复:
http://www.cnblogs.com/eric_ibm/archive/2013/03/18/Invoke.html


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

也谢谢sp1234 的批评。一直给我们帮助
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,