【问题标题】:DataBinding to Textbox performance in C#.NET数据绑定到 C#.NET 中的文本框性能
【发布时间】:2012-09-18 10:58:14
【问题描述】:

我在一个非常高性能的 WinForms 应用程序中工作,我从服务器获取一些数据并将这些结果显示在我的 GUI 上的文本框中。在性能方面,将这些文本框绑定到我的代码中的某些变量会更好,还是只在我的代码中包含类似 textbox1.text = data 的内容?或者是一样的

【问题讨论】:

  • 哪种技术? WPF ? WinForms ?
  • 我正在使用 C#.NET WinForms WinForms

标签: c# winforms performance data-binding


【解决方案1】:

当您使用数据填充某些视图时,性能不是您的主要问题(通常)。

从开发和进一步维护的角度来看,绑定很方便。它们不允许您在用户编辑值后忘记将值放回数据源。此外,它们与数据验证紧密结合。事实上,高级绑定引擎(如 WPF 的引擎)使数据绑定成为在 GUI 中处理数据的唯一轻松方式。

WinForms 中的绑定引擎比 WPF 更简单(从它所具有的功能来看),但它仍然比 textbox1.text = data 更好。

【讨论】:

    【解决方案2】:

    这并不重要。重要的是您获取数据的方式。如果您有一些缓慢的操作,如数据库查询,您可以在后台线程中执行它们,可能使用BackgroundWorker 以避免在此操作运行时冻结主 UI 线程。

    【讨论】:

      【解决方案3】:

      我不确定您输出的确切内容,但这可能有助于考虑性能:

      迭代地将数据/文本附加到文本框或字符串之类的东西(例如,在使用 textBox.Text += "message" 之类的东西记录错误消息的情况下)是一个 O(n2 sup>) 操作,这意味着输出越大,你会看到越剧烈的减速

      此外,在我迭代添加文本以输出的实验中,

      textBox.Text += "message";
      

      比直接附加到字符串然后执行(在迭代结束时)慢大约 3200 倍

      textBox.Text = theString;
      

      使用

      textBox.AppendText("message");
      

      甚至更慢(大约 9600 次)。

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-23
        • 1970-01-01
        相关资源
        最近更新 更多