winform 如何跨线程访问
3个回答
展开全部
//第一步:定义一个委托
public delegate void MyInvoke(bool checked);
private void button_Click(object sender, EventArgs e)
{
//第二步:启动一个后台线程
Thread t = new Thread(new ThreadStart(fun));
t.IsBackground = true;
t.Start();
}
//这个是后台线程函数
private void fun()
{
// SetChecked方法从后台线程访问窗体
SetChecked(false);
}
private void SetChecked(bool checked)
{
//第三步:检测是否需要跨线程调用
if (checkbox.InvokeRequired)
{
//需要跨线程
//第四步:利用委托和Invoke方法实现跨线程调用
MyInvoke _myInvoke = new MyInvoke(SetChecked);
this.Invoke(_myInvoke, new object[] { checked });
}
else
{
//不需要跨线程
// 直接存取、修改窗体控件
this.checkbox.Checked = checked;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询