110,537
社区成员
发帖
与我相关
我的任务
分享
namespace autologin
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Label1.Text = "想要被线程调用";
}
//下面是一个线程类
public class checkFlowThread
{
public checkFlowThread()
{
}
public void checkFlow()
{
Form1.Label.Text = "想访问外部类的非静态成员";
}
}
}
}
namespace autologin
{
public delegate void ChangeLabel(string lbinfo);//代理
public partial class Form1 : Form
{
Thread checkflowthread = null;//检测流量的线程
ChangeLabel changelabel = null;//创建一个代理(委托)
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
changelabel = new ChangeLabel(ChangeLabelText);
}
//让代理(委托)调用此方法修改lbinfo的值,实现跨线程访问控件成员
private void ChangeLabelText(string lbinfo)
{
if (this.lbinfo.InvokeRequired)
{ //调用方在另外一个线程中
//在拥有此控件的线程上执行委托指向的方法
this.Label1.Invoke(changelabel, lbinfo);
}
else
{//调用方在当前线程中
this.Label1.Text = lbinfo;
}
}
//下面是一个线程类
public class checkFlowThread
{
public checkFlowThread()
{
}
public void checkFlow()
{
ChangeLabelText("想访问外部类的非静态成员");//提示错误:无法通过嵌套类型“autologin.Form1.checkFlowThread”来访问外部类型“autologin.Form1”的非静态成员
}
}
}
public class Container
{
public class Nested
{
private Container m_parent;
public Nested()
{
}
public Nested(Container parent)
{
m_parent = parent;
}
}
}
public class checkFlowThread
{
Form1 form1;
public checkFlowThread(Form1 f)
{
this.form1=f;
}
public void checkFlow()
{
form1.Label.Text = "想访问外部类的非静态成员";
}
}