C# 将事件数据发送到其他窗体时响应时间慢

C# 将事件数据发送到其他窗体时响应时间慢,c#,.net,winforms,event-handling,msmq-wcf,C#,.net,Winforms,Event Handling,Msmq Wcf,我有一个C#winform应用程序,在屏幕上有4个不同的用户控件。每个用户控件都包含一个datagridview控件。当用户更新这4个控件中任何一个的单元格值时,我会引发一个自定义事件,将单元格值发送到屏幕上的第5个表单 第五张表格与Excel电子表格非常相似。第五张表单必须显示在其窗格/窗口上发送的新值。问题不在于从4个用户控件中的任何一个发送数据,这些控件都有效,并反映在第5个表单中 但是,当引发发送数据的事件时,它会停止用户输入几秒钟。我想第五表格正在忙着更新单元格。所以我的问题是,如果我

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

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

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


关于如何处理和解决此问题,您有什么想法吗?

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

我已经编辑了您的标题。请看,“,其中共识是“不,他们不应该”。你的剖析器告诉你什么?如果没有更多关于第五个控件正在做什么的信息,就不可能说。在更新单元格之前是否需要进行一些处理?如果是这样,那么您应该让一个异步任务来完成这项工作,然后在异步任务完成后更新单元格。罗兰,我有VS 2010 Professional,但它没有分析器:(Jim,可能是这样,但是当用户输入数据时,第5个控件的响应速度非常快。因此,我很惊讶在引发事件并以编程方式发送数据时会出现这样的延迟。我只是想,在触发事件时,可能主线程正忙于执行其他任务。我会尝试一下。谢谢。我给出了一个答案。)尝试一下,这有助于发现真正的问题。当我在你的建议后检查计时时,基本上花了零毫秒。但是表单仍然很慢。结果表明,当我向电子表格发送值时,我不应该让监听电子表格更改值的事件回到我的控件。是的,天啊!真的吗?!谢谢!