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

2024-04-28

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

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(使用前将#替换为@)

我什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive? 的相关文章

随机推荐

  • Vim 中的类和函数名称高亮显示

    在沉迷于它的模态输入之后 我最近刚刚从 Textmate 设置了我的 Vim 环境 不过 Vim 中的语法高亮似乎不太美观 我用 C 编写代码 由于函数调用和类名无法突出显示 因此代码更难以阅读 我玩了一下配色方案 但找不到任何与 类名 或
  • Android 中的位图圆形裁剪

    我有一个方形位图显示在半透明圆圈下方 用户可以触摸并拖动位图来定位它 我希望能够裁剪位图位于圆圈下方的任何部分 我怎样才能做到这一点 看一下圆角位图Drawable http developer android com reference
  • groff:我可以嵌入图像吗?

    我正在生成一些 troff 风格的文档 有没有办法将图像 jpg等 嵌入到groff文件中 取决于输出格式 如果您要创建 PostScript 文件 则可以使用 PSPIC 它使用 PS 文件本身和单个图像 例如 PSPIC image p
  • SwiftUI 按钮在出现时更改文本大小

    从 GIF 中可以看出 一旦工作表完全打开 完成 按钮文本就会变大 这不仅发生在这个视图中 而且也发生在使用系统图像而不是文本的其他视图中 有谁知道问题的解决方案还是我做错了什么 我仍然对 Swift 记忆犹新 NavigationView
  • JQuery 工具提示 VS JQuery UI 工具提示 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在 Facebook 浏览器中更新 Service Worker

    遇到了一个问题 我们的一些用户在我们网站的 Facebook 浏览器中存在有问题的 Service Worker 问题 当 Facebook 应用程序用户访问我们在 FB 上共享的页面时 他们会在 FB 浏览器上看到我们的 您离线页面 该错
  • 仅重命名 pandas 数据框中的最后一列(考虑重复的标题)

    我需要重命名only我的数据框中的最后一列 问题是有许多同名列 这是有原因的 因此我无法在网上其他示例中使用该代码 有没有办法使用特定的东西来隔离最后一列 我尝试过做这样的事情df rename columns df columns 1 T
  • Azure Function 上的此平台不支持 System.Drawing

    我已阅读以下内容answer https stackoverflow com questions 51904125 azure function gives error system drawing is not supported on
  • 用于生成交互式图的 Java 库

    我想将我们的 SOA 服务可视化为图表 我们有商业服务和领域服务 gt domain service 1 e g business service 1 gt domain service 2 gt domain service 3 我目前使
  • 创建新的 IHttpActionResult 操作结果方法

    有什么办法可以让我使用新的IHttpActionResult接口返回一个HttpStatusCode NoContent回复消息 我目前正在使用return new HttpResponseMessage HttpStatusCode No
  • 如何返回从起始资源到指定路径深度的所有 S->P->O 三元组?

    我的目标是以图形方式表示指定资源的深度两条边内的 S gt P gt O 关系 p Person 1 我希望从查询中返回该路径长度内的所有关系 s p o在我的图形应用程序中进行进一步处理 我尝试了下面的第一个查询 它给了我第一组 s p
  • EntityFramework 6 AddOrUpdate 不适用于复合或复合主键

    这个问题是我周末的噩梦 我有一张桌子AddOrUpdate无法正常工作 它不断添加但从不更新 我想做的就是当我使用以下命令将新实体添加到表中时AddOrUpdate我想要它检查AppointmentId and CompletionCode
  • 是否有使用严格求值的 Haskell 编译器或预处理器?

    我正在寻找一个默认使用严格求值而不是惰性求值的 Haskell 编译器 我只想使用 OCaml 但 Haskell 的语法是好多了比 OCaml 的 Haskell 是纯粹的 并且具有很酷的功能 例如类型类 我真的不想经常把 s and 我
  • Unity3D 中 android 切换速度太慢

    我的游戏有 1000 多个帧 并且精灵的格式是 Crunch 因为这个项目中的精灵太多 当我想从Windows切换到Android时 我花了将近1天的时间来切换 实际上我不允许它完全切换 但切换到Windows并没有那么多 也许只有15分钟
  • ShareLinkContent .setContentTitle()、.setContentDescription()、.setImageUrl() 已弃用

    Facebook 开发者网站表示 自 2017 年 4 月 18 日起 Graph API 2 9 及更高版本不再支持以下参数 对于 2 8 及更低版本 这些参数将持续有效到 2017 年 7 月 17 日 1 一个contentTitle
  • 如何在 Linux 上使用 Python 导出

    我需要在 Python 中进行这样的导出 export MY DATA my export 我尝试过这样做 python mode coding utf 8 import os os system export MY DATA my exp
  • 删除两个元素将数组平均分成三部分,时间复杂度为 O(n)

    我遇到一个问题 让您删除数组中的两个元素以使三部分的总和相等 Ex 1 2 4 3 5 2 1 After I drop the 4 and 5 it becomes 1 2 3 2 1 限制条件 1 Numbers are all int
  • 如何在 MS Access 中填充字段描述

    当通过 ODBC 尤其是 AS 400 链接到外部数据源时 我经常会在另一端遇到神秘的字段名称 而数据字典不可用 在极少数情况下 我能够从其他数据库获取字段描述 我希望能够一次导入它们 而不是一次将每个描述复制 粘贴到表设计表单中 我无法在
  • 如何从 Twitter 按钮获取“仅推文计数”

    我一直在看http dev twitter com pages tweet button build your own example http dev twitter com pages tweet button build your o
  • 我什么时候应该使用 UdpClient.BeginReceive?我什么时候应该在后台线程上使用 UdpClient.Receive?

    从本质上讲 除了明显的区别之外 它们之间还有哪些区别 我什么时候应该使用哪种形式 class What public Go Thread thread new Thread new ThreadStart Go2 thread Backgr