将事件数据发送到另一个表单时的慢响应时间

时间:2014-03-25 21:54:46

标签: c# .net winforms event-handling msmq-wcf

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

此第5个表单与Excel电子表格非常相似。第5个表单必须显示在其窗格/窗口上发送的新值。问题不在于从4个用户控件中的任何一个发送数据,这些控件可以正常工作并反映在第5个表单上。

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

有关如何处理和解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

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