2011-11-24 61 views
0

我正在以下编译器错误与下面的代码片断:一个对象引用是所必需的非静态字段,方法或属性

一个对象引用是所必需的非静态字段,方法,或 属性

在第5行,以及

甲字段初始不能引用非静态字段,方法或 物业

ThreadStart这里checker线1:

public Thread tC = new Thread(new ThreadStart(checker)); 

public static void checker() 
{ 
    if (CheckServerState()) LabelWrite(true, Label1); 
    else LabelWrite(false,Label1); 
} 

任何人都可以请解释为什么我得到这些错误?

回答

2

在你的第一个代码片段中,我假定Label1是一个类的名称,而不是变量的名称。您需要实例化该类的一个对象。然后,你可以在对象传递给你的LabelWrite()方法

public static void checker() 
{ 
    Label1 label = new Label1(); 
    if (CheckServerState()) LabelWrite(true, label); 
    else LabelWrite(false,label); 
} 

第二编译器错误意味着你不能参考方法checker()当你在一个字段初始分配新的Thread对象tC

你需要做的是在构造函数中:

public Thread tC; 

public MyClass() 
{ 
    tC = new Thread(new ThreadStart(checker)); 

} 

public void checker() 
{ 
    if (CheckServerState()) LabelWrite(true, Label1); 
    else LabelWrite(false,Label1); 
} 
相关问题