2011-11-24 60 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); 
} 
相關問題