gpt4 book ai didi

.net - 我什么时候应该使用 UdpClient.BeginReceive?什么时候应该在后台线程上使用 UdpClient.Receive?

转载 作者:行者123 更新时间:2023-12-01 13:01:28 26 4
gpt4 key购买 nike

从本质上讲,除了明显的区别之外,它们之间还有哪些区别?我什么时候应该使用哪种形式?

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);
}
}
}
}

对比

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();
}
}

最佳答案

我认为差异通常不会很大,但如果我希望传入流中有暂停,我更喜欢完全异步方法(开始.../结束...),以便可以卸载回调几层而不是要求额外的线程。异步方法的另一个优点是您始终可以获取所需的数据,将另一个异步获取排队,然后在现有 异步线程上处理新数据,为并行性提供更多选择(阅读, 一次处理).当然,这也可以手动完成(可能使用工作队列)。

你当然可以剖析...

关于.net - 我什么时候应该使用 UdpClient.BeginReceive?什么时候应该在后台线程上使用 UdpClient.Receive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com