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 --------------------编程问答--------------------
这不是闲的没事干才想到的主意嘛。既然要循环、阻塞在那里,你有何必额外地搞什么线程?直接顺序执行不就行了嘛。 --------------------编程问答--------------------
你前后两个说法,完全是自相矛盾。
既然是阻塞在那里、“等到执行结束”才返回ajax,有搞什么线程呢?
没听说额外地搞一个线程反而会得到“速度返回”的。你应该理解线程,再用它。 --------------------编程问答--------------------
是我讲的不好,我那个线程其实不需要返回,就是到得到邮件地址后,开辟出一个线程去发邮件,不需要返回。 然后我后台主线程继续执行,快速ajax返回给前台页面。 --------------------编程问答--------------------
谢谢,我理解了。我不要返回值,只要不接受返回值就可以了。原来它一直在等返回值,才慢的
//r = mc.EndInvoke(result);//用于接收返回值
也谢谢sp1234 的批评。一直给我们帮助
补充:.NET技术 , C#