确保创建的每个控件在 .NET 中都有句柄会产生哪些副作用?

2023-12-20

过去,我遇到过冻结问题,这是由于在为该控件创建句柄之前使用该控件对 UI 线程上的调用进行编组而导致的。 (看金·格林利的博客 http://krgreenlee.blogspot.com/2007/09/onuserpreferencechanged-hang.html了解更多信息)。

使用这种方法(递归实现),我确保在应用程序中创建的所有控件在构造时都有句柄。具体来说,这是在设计者调用初始化控件的 GUI 之后完成的。

我的问题是:

问 - 除了性能之外,是否还有其他原因不确保所有控件都以这种方式具有句柄?

我问这个问题是因为我们遇到了放置在基础设施面板内的基础设施控件的问题。当用户修改此面板的大小时,所包含的 Infragistics 控件的大小不会正确调整大小,即使它的 Dock 属性设置为 Dock.Fill。还有一个问题是,此控件中出现的工具提示不再显示在鼠标旁边。如果容器和包含控件都不能确保它们具有为自己及其所有子控件创建的句柄,那么这两个问题都可以解决。

我希望这里有人能够回答我的问题。任何可以解释为什么我也可能会看到这个问题的人都可以得到布朗尼点! =) 但我认为这个问题更适合 Infragistics 团队。

Cheers!


您在自己的代码中编组时是否遇到这些问题,或者是否在某些外部代码上发生过?

我也遇到过几次这些问题,并转而使用 SynchronizationContext 类。此类的明确优点是您不需要任何控件来在线程之间进行编组。

您需要在要调用的线程(即 UI 线程)上获取该类的实例,如下所示:

private SynchronizationContext m_oSyncContext = SynchronizationContext.Current ?? new SynchronizationContext();

使用此实例,您可以使用任何线程中的 Post/Send 方法将消息同步发送到检索该实例的线程。

这样做的缺点是您必须确保在正确的线程上检索实例,我建议像上面的示例一样进行操作。如果您在当前实例已经存在的情况下创建实例,则可能会产生一些令人讨厌的副作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

确保创建的每个控件在 .NET 中都有句柄会产生哪些副作用? 的相关文章

  • 为什么必须在 C# 中 Close() 文件?

    我知道这可能看起来很愚蠢 但为什么以下代码仅在我 Close 文件时才有效 如果我不关闭文件 则不会写入整个流 Steps 在表单加载时运行此代码 显示后使用鼠标关闭表单 程序终止 当文件对象超出范围时 不应该自动刷新或关闭吗 我是 C 新
  • 从 SpecFlow 设置 Nunit TimeoutAttribute

    我已经使用 SpecFlow 编写了几个长时间运行的端到端集成测试 但由于 Nunit 超时 它们失败了 将 Timeout x 属性添加到 TestFixture 可以解决问题 但当然每次功能更新时都会被覆盖 如何以 SpecFlow 尊
  • 如何使用 EPPlus 在单个 Excel 单元格中加载包含逗号的文本

    我正在尝试EPPlus 库 http epplus codeplex com 我被困在这个问题上 我必须在单个单元格中加载文本 但是当该文本包含逗号时 我使用的代码会沿着多个单元格 沿着正确的方向 分割文本 这是我用来加载文本的代码 usi
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • 如何调试 .NET 运行时中的内部错误?

    我正在尝试调试一些处理大文件的工作 代码本身works 但 NET 运行时本身会报告零星错误 对于上下文 这里的处理是一个 1 5GB 文件 仅加载到内存中一次 在循环中处理和释放 故意尝试重现此否则不可预测的错误 我的测试片段基本上是 t
  • 如何更改字体的元数据(特别是标题)?

    我需要一种动态更改字体名称的方法 但在 net 中找不到这样做的方法 我不关心字体文件类型 所以otf fon ttf都打开 我尝试过的事情 使用 dsofile dll OleDocument 属性读取器 这些与访问字体名称的任何内容所使
  • 在.Net 4.0程序中运行.Net 2.0可执行文件

    我正在尝试从我的程序运行外部可执行文件 我的程序是在 Net 4 0框架上编译的 以便使其能够在Windows XP上运行 外部应用程序在 Net 2 0框架上编译 当我在我的机器 Windows 7 安装了 Net 4 5 上运行这个程序
  • 如何在自定义用户控件(.Net 4、Winforms)上使用项目集合编辑器?

    我创建了一个UserControl其中包含一个自定义ToolStrip Control 在使用时UserControl在整个应用程序中 ToolStrip控件不能直接访问 因为它逻辑上嵌入在UserControl 因此 要访问的项目Tool
  • VB.NET 和 MySql UPDATE 查询

    我的代码在这里没有错误 至少在我调试它时没有错误 我使用VS 2010 但我希望发生的是 当我单击添加按钮时 文本框 txtQty 中的数字将添加到当前保存在 数量 列中的数字中 例如 txtQty 100 该列上的当前值为 200 我想将
  • 在.NET中发送电子邮件,电子邮件保存在用户的已发送邮件中

    我正在尝试使用 VB NET 发送电子邮件 有两个要求 电子邮件将保存在 Outlook 他们唯一的电子邮件客户端 中的 已发送邮件 文件夹中 电子邮件中附有 PDF 动态生成 我目前正在创建一个新的邮件留言 http msdn micro
  • 将跟踪输出重定向到控制台

    假设我正在 VB Net 中开发一个小型批处理控制台应用程序 我希望能够像这样构建应用程序 Sub WorkerMethod Do some work Trace WriteLine Work progress Do more work T
  • NewGuid 与 System.Guid.NewGuid().ToString("D");

    使用生成 GUID 时有区别吗NewGuid vs System Guid NewGuid ToString D 或者它们是同一件事 我意识到这个问题已经有了一个公认的答案 但我认为分享一些有关格式化指南的信息会很有用 The ToStri
  • .NET - 用户控件拖放 - 子控件

    我有 FlowLayoutPanel 和用户控件 可以拖放重新排序 这种作品 但问题是子控件阻止拖动实际的父 UserControl 所以我的问题是如何启用包含子控件的 UserControl 的拖动 如果我理解正确的话 我遇到了与您相同的
  • 如何更改ComboBox所选项目的前景色?

    是否可以更改所选 不在下拉列表中 项目的外观 combobox ForeColor 仅更改下拉列表中所有项目的文本颜色 Edit 变体如下 我们的是 public static void CBoxDrawItem object sender
  • 如何制作可修补/可更新的应用程序?

    我已经完成了一个学生项目 该项目从互联网上的 xml 文件中提取数据并将其保存到数据库并显示 我以几种不同的方式使用这些数据 例如在主页上显示在另一个选项卡中作为表格 并创建一些图表 我通过制作 5 个不同的类来完成这一切 每个类提取不同类
  • 在 .NET 中旋转 JPEG,质量损失最小

    我正在尝试支持从 ASP NET MVC 旋转 JPEG 图像 以 90 度增量 我正在尝试使用System Drawing GDI 但是我遇到了问题 我尝试使用Image RotateFlip http msdn microsoft co
  • & 运算符的含义是什么?

    在下面的代码中 Expression
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ

随机推荐

  • 真正的客户端 HTML 包括

    HTML 不支持客户端包含其他 HTML 例如使用 C 获取 include指示 相反 客户端 HTML 包含的主要工具似乎是iframe object 尤其是 jQuery 的 load See 这个线程 https stackoverf
  • 如何在HTML页面中播放视频

    我正在尝试在 HTML 页面上播放 mp4 视频 我搜索了网络并发现在 HTML5 中我可以使用video像下面这样的标签
  • 在 Clojure 中如何迭代直到达到固定点?

    我经常处于这样的位置 我的代码如下所示 iterate improve x 我正在寻找第一个值 该值不再比前一个值有所改进 两者都不filter nor take while帮助他们找到一个明显的解决方案 然而 我犹豫着要不要写出来 loo
  • mpld3:如何使用插件更改工具栏的位置?

    mpld3 显示的工具栏通常位于屏幕的右下角 我希望它位于屏幕的右上角 似乎可以找到控制工具栏位置的代码here https github com jakevdp mpld3 blob cec043807d18d788221455f1933
  • ElasticSearch - 使用 FilterBuilders

    我是 ElasticSearch 和 Couchbase 的新手 我正在构建一个示例 Java 应用程序来了解有关 ElasticSearch 和 Couchbase 的更多信息 正在阅读ElasticSearch Java API htt
  • 运行多个并发 GMainLoop

    是否允许 GLib 用户运行多个GMainLoop实例在多个线程中同时运行 每个线程运行自己的实例 我到处都找到了 是 和 否 的答案 我意识到这个问题之前已经在这个论坛上被问过 2011 年 12 月 https stackoverflo
  • Wagtail - 仅在主页上显示三个最新帖子

    我创建了一个模型来在主页上显示帖子 但只想显示三个最新帖子 我是否需要为此使用分页 或者是否有可以使用的挂钩 我想我可以使用分页 只是不包含 下一个 按钮 但这看起来有点像黑客 我想以正确的方式做到这一点 我对 Django 和 Pytho
  • JavaScript 中何时使用 null 或 undefined? [复制]

    这个问题在这里已经有答案了 我对 JavaScript 何时返回感到困惑null or undefined 此外 不同的浏览器似乎以不同的方式返回这些内容 我正在寻找一些例子null undefined与返回它们的浏览器 虽然我现在很清楚u
  • 在 Symfony2 中,为什么注入服务容器而不是单个服务是一个坏主意?

    我找不到这个问题的答案 如果我注入服务容器 例如 config yml my listener class MyListener arguments service container my service class MyService
  • MPI(C++) 中向量的用法

    我是 MPI 编程的新手 仍在学习中 直到通过定义结构创建派生数据类型为止我取得了成功 现在我想在我的结构中包含 Vector 并希望跨进程发送数据 例如 struct Structure Constructor Structure X n
  • PHP对象_构造函数

    我有以下代码 当我运行此代码时 浏览器中不会输出任何内容 我遵循的教程说此代码应输出 使用参数 ap
  • 检查 XML 元素是否有子元素或值

    我使用 NET 的 XMLDocument 作为 XML 文件的容器 当我使用时 document GetElementsByTagName ElementX 0 HasChildNodes 即使元素看起来像这样 它也会对所有元素返回 tr
  • 移动设备的 OAuth 回调过程

    我正在为 BlackBerry 移动设备设计 Netflix 应用程序 我目前正在研究 OAuth 我现在可以在应用程序的嵌入式浏览器字段中生成 Netflix 登录页面 用户登录后 Netflix 会将用户从登录页面发送到指定的回调 UR
  • Jython Web 应用程序性能

    我目前正在构建 Jython Web 应用程序 但我担心 Jython 应用程序性能 让我感到欣慰的是 我可以在单独的 Java jar 中编写任何计算密集型任务并从 Jython 调用它们 有没有人在这样做时遇到问题 或者预见到这样的设置
  • “if”语句在Scheme 中如何工作?

    这是我目前正在自学计划的链接 http www ccs neu edu home dorai t y scheme t y scheme Z H 1 html http www ccs neu edu home dorai t y sche
  • 如何在 C# 6 中使用转义字符和字符串插值?

    我一直在使用字符串插值并且喜欢它 但是 我有一个问题 我试图在输出中包含反斜杠 但无法让它工作 我想要这样的东西 var domain mydomain var userName myUserName var combo domain us
  • Adb 反向 tcp 不适用于远程连接的 Android

    我正在尝试在远程连接的 Android 设备上执行反向 tcp 命令 使用adb connect
  • Firebase 模拟器与现实世界的结果不匹配

    为了方便阅读本问题 请参考以下网址 URL definitions url1 https my firebase firebaseio com users user id settings url2 url1 json 我测试了两种不同的安
  • SET 与 cypher 中的 CASE 语句结合使用

    我试图将两个不同的关系属性设置为一个计数 并使用取决于另一个关系属性的值的案例构造 有一个控制台位于http console neo4j org id rt1ld5 http console neo4j org id rt1ld5 cnt
  • 确保创建的每个控件在 .NET 中都有句柄会产生哪些副作用?

    过去 我遇到过冻结问题 这是由于在为该控件创建句柄之前使用该控件对 UI 线程上的调用进行编组而导致的 看金 格林利的博客 http krgreenlee blogspot com 2007 09 onuserpreferencechang