2014-03-25 58 views
0

我有一個C#winform應用程序,它在屏幕上有4個不同的用戶控件。每個用戶控件都包含一個datagridview控件。當用戶更新這4個控件中任何一個的單元格值時,我會引發一個自定義事件,將單元格的值發送到屏幕上的第5個窗體。將事件數據發送到另一個表單時的響應時間慢

這第五種形式與Excel電子表格非常相似。第五種形式必須顯示在窗格/窗口上發送的新值。問題不在於發送來自4個用戶控件中的任何一個的數據,該數據起作用並反映在第5個表單上。

但是,當提高發送數據的事件時,它會停止用戶輸入幾秒鐘。我認爲第五種形式正在忙於更新單元格。所以我的問題是,如果我實現一個消息隊列或類似的東西(wcf)發送新值到控件的電子表格,第5個控件是否會拾取數據(可能是應用程序空閒事件),並且不會減慢最終用戶輸入4個主要控件中的任何一個,或者我會看到相同的問題,因爲所有表單都在相同的UI線程中運行。我做了一些測試,看看第5個控件是否隱藏起來,看是否更快,但我看到了相同的結果。此外,我做了一些時間檢查,肯定是在我提出Value_Changed事件後,系統變得非常緩慢。

關於如何處理和解決此問題的任何想法?

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

你的分析器告訴你什麼? –

+0

如果沒有更多關於第五控制器在做什麼的信息,不可能說。它在更新單元之前是否需要做一些處理?如果是這樣,那麼你應該有一個異步任務所做的工作,以及異步任務完成之後再更新細胞。 –

回答

1

也許你應該嘗試一個簡單的Control.BeginInvoke()來傳遞一個結構的數據。這將確保您在對象之間沒有線程問題並且是異步的。

+0

我給一個嘗試。謝謝。 – Rick

+0

我給一個嘗試,它幫助揭示了真正的問題。當我檢查的時間後,你的建議它基本上採取了零毫秒,但形式仍然是緩慢的。事實證明,當我發送的值到電子表格,我不應該偵聽電子表格change_values能回到我的控制。是的情況下,DAH!真的感謝! – Rick

相關問題