我想在設備上收聽消息,並且從第一條消息顯示它在datagridview上看到第一條消息,但從設備獲取消息完美工作,但問題在於當我要設置DGV內容時,我得到了此異常跨線程操作無效,並且我已閱讀this相關主題。
但他們都沒有幫助,因爲沒有綁定DGV。
這裏是我的代碼: 1.首先我必須被綁定到DGV消息類,線程安全問題:跨線程操作無效
public class Msg_log
{
public Msg_log()
{
this.Event = null;
this.Operator = null;
}
public string Event { get; set; }
public string Operator { get; set; }
}
,這裏是如何創建的loadform事件另一個線程:
newThread = new System.Threading.Thread(this.Event_Listener);
newThread.Start();
並在Event_Listener功能
x.Add(message);
MsgDGV.DataSource = null;
MsgDGV.DataSource = x;
MsgDGV.Refresh();
消息對象是這樣的:
Msg_log message = new Msg_log();
及其消息的事件和運算符變量已被正確設置,並且我將MSG.DataSource = null,因爲我想在新消息正在提交後更新我的DGV(實際上,這是我的想法,如果有的話是更好的方式,我會明白這一點),這是我得到的豁免線:跨線程操作無效。在其他帖子中,我發現我應該使用Invoke方法,但我不知道如何調用Msg_DGV.Invoke(??,???);我不知道我應該怎麼傳遞給得到正確的結果...
乾杯,
創建一個方法來處理設置DGV數據源和刷新到DGV並調用MsgDGV.Invoke(myDelegate,vnew Object [] {x}); http://msdn.microsoft.com/en-us/library/a1hetckb – Lloyd 2012-01-10 11:20:12