0

我有一个 C# winform 应用程序,它在屏幕上有 4 个不同的用户控件。这些用户控件中的每一个都包含一个 datagridview 控件。当用户在这 4 个控件中的任何一个中更新单元格值时,我会引发一个自定义事件,将单元格的值发送到屏幕上的第 5 个表单。

第 5 种形式与 Excel 电子表格非常相似。第 5 种形式必须显示在其窗格/窗口上发送的新值。问题不在于从 4 个用户控件中的任何一个发送数据,该控件有效并反映在第 5 个表单上。

但是,当引发发送数据的事件时,它会停止用户输入几秒钟。我认为第五种形式正忙于更新单元格。所以我的问题是,如果我实现一个消息队列或类似的东西(wcf)来将新值发送到电子表格(如控件),那么第 5 个控件是否会拾取数据(可能在应用程序空闲事件上)并且不会减慢最终用户输入4 个主控件中的任何一个,或者我只会看到相同的问题,因为表单都在同一个 UI 线程中运行。我确实做了一些测试,看看如果第五个控件从视图中隐藏起来是否更快,但我看到了相同的结果。我还做了一些时间检查,肯定是在我引发 Value_Changed 事件之后,系统变得非常慢。

关于如何处理和解决这个问题的任何想法?

4

1 回答 1

1

也许您应该尝试一个简单的 Control.BeginInvoke() 来通过结构传递数据。这将确保您在对象之间没有线程问题并且是异步的。

于 2014-03-27T01:18:06.513 回答