从本质上讲,除了明显的区别之外,它们之间还有哪些区别?我什么时候应该使用哪种形式?
class What
{
public Go()
{
Thread thread = new Thread(new ThreadStart(Go2));
thread.Background = true;
thread.Start();
}
private Go2()
{
using UdpClient client = new UdpClient(blabla)
{
while (stuff)
{
client.Receive(guh);
DoStuff(guh);
}
}
}
}
versus
class Whut
{
UdpClient client;
public Go()
{
client = new UdpClient(blabla);
client.BeginReceive(guh, new AsyncCallback(Go2), null);
}
private Go2(IAsyncResult ar)
{
client.EndReceive(guh, ar);
DoStuff(guh);
if (stuff) client.BeginReceive(guh, new AsyncCallback(Go2), null);
else client.Close();
}
}
我认为差异通常不会很大,但如果我希望传入流中出现暂停,那么我更喜欢完全异步方法(开始.../结束...),以便可以将回调卸载几层而不是要求额外的线程。异步方法的另一个优点是,您始终可以获取所需的数据,对另一个异步获取进行排队,然后在服务器上处理新数据existing异步线程,为并行性提供了更多选项(一次读取,一次处理)。当然,这也可以手动完成(也许使用工作队列)。
您当然可以配置文件...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)