2014-01-24 52 views
1

即時通訊在vb.net中創建一個讀取csv文件並在DataGridView組件中顯示其內容的簡單WinForm應用程序。下面是我在主UI線程上運行的代碼。在分離線程上使用rows.insert的奇怪行爲

For Each line In fileinput 
    Dim elements = line.Split(",") 
    DataGridView1.rows.insert(0,elements) 
Next 

上述代碼在主表單線程中正常工作。元素數組用於填充每行中的所有單元格,但是如果我在單獨的線程上嘗試相同的代碼,那麼我在每行的第一個單元格中都會獲得System.String []。任何人都知道爲什麼會發生?

下面是創建並運行在一個新的線程整個代碼:

昏暗的文件名作爲字符串= 「」

​​

回答

1

試試這個:

Me.Invoke(Sub() 
      DataGridView1.Rows.Insert(0, elements) 
      End Sub) 

當你正在改變在活動的UI線程上進行控制時,需要在該線程本身內部進行更改,否則會遇到問題。我很驚訝,代碼執行時沒有拋出異常。

Me.Invoke將確保數據在主線程上填充。

+0

我已經試過了。這就是我首先得到了奇怪的行爲。感謝您的回覆。 – CelestialDog

+0

好的,我收回它。我刪除了我自己的線程代碼,並使用你的代碼,它完美地工作。非常感謝! – CelestialDog

+0

不客氣。 :-) –