我有ListBox
叫做lstProductGroups。從另一個線程訪問ListBox.SelectedItems
在一個簡單的Windows窗體,一種稱爲GetGroups
給我用戶喜歡Cars, Bikes
等
public List<string> GetGroups()
{
List<string> prodGroups = (from object item in lstProductGroups.SelectedItems select item.ToString()).ToList();
return prodGroups;
}
選擇序列組但是,如果我嘗試從另一個線程訪問同樣的方法,我得到的所有的項目我名爲System.Data.DataRowView
的列表。
我甚至在foreach
循環中試過它BeginInvoke
,但item.ToString()
總是返回System.Data.DataRowView
。
我是帶線程的Winforms的新手。我究竟做錯了什麼?
你在使用什麼來促進穿線; 'BackgroundWorker','Thread','Task'? – MoonKnight 2012-03-27 10:29:24
您是否嘗試使用Invoke()從另一個線程中調用GetGroups()方法?它應該返回正確的列表。 – 2012-03-27 10:33:33
我訂閱的第三方API事件。我不知道他們的內部實施。但事件方法中的任何UI更新代碼引發了'跨線程操作無效:從其創建的線程以外的線程訪問控制.' – 2012-03-27 10:34:27