c線程中訪問控制項
❶ C#如何在線程中訪問控制項對象
利用ListView.Invoke解決跨線程安全調用,關鍵代碼如下:
voidFindFileInDir(){
if(listView2.InvokeRequired)
{
//跨線程調用
listView2.Invoke(newMethodInvoker(delegate
{
listView2.Items.Add(path);
}));
}
else
{
//直接調用
listView2.Items.Add(path);
}
}//EndofFindFileInDir
❷ c#子線程如何訪問子窗體中的控制項
控制項聲明成public
然後得到窗體的引用,直接可以訪問。如果窗體不是在子線程中創建的,需要使用Invoke來訪問。
❸ c# 跨線程訪問控制項
用委託,具體代碼如下~:
public delegate void MyInvoke(string str);
private void button9_Click(object sender, EventArgs e)
{
//_myInvoke = new MyInvoke(SetText);
// = false;
Thread t = new Thread(new ThreadStart(fun));
t.Start();
}
private void fun()
{
//_myInvoke("dddd");
SetText("ddd");
}
private void SetText(string s)
{
if (textBox6.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText);
this.Invoke(_myInvoke, new object[] { s });
}
else
{
this.textBox6.Text = s;
}
}