c# 線程間操作無效: 從不是創建控件的線程訪問它
作者:佚名 時間:2012-05-14 分享到:
c#不允許對跨線程的控件的訪問,上海網站建設如需操作跨線程的操作需要通過委托(delegate),即是函數指針來操作跨線程。說明dgList控件不是該線程的控件,需要使用委托操作。比如:
delegate void SetListBoxCallback(string str); //定義委托
public void SetListBox(string str)
{
if (listBoxInfo.InvokeRequired) //控件是否跨線程?如果是,則執行括號里代碼
{
SetListBoxCallback setListCallback = new SetListBoxCallback(SetListBox); //實例化委托對象
listBoxInfo.Invoke(setListCallback, str); //重新調用SetListBox函數
}
else //否則,即是本線程的控件,控件直接操作
{
listBoxInfo.Items.Add(str);
}
}