C#.NET中的DataBinding到Textbox性能

时间:2012-09-18 10:58:14

标签: c# winforms performance data-binding

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

迭代地将数据/文本附加到文本框或字符串之类的内容(例如,在使用textBox.Text + =“message”等记录错误消息的情况下)是 O(n 2 操作,意思是输出越大,你看到的减速就越显着

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

textBox.Text += "message";

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

textBox.Text = theString;

使用

textBox.AppendText("message");

甚至更慢(大约9600次)。