2012-11-24 15 views
15

例1使用した:私は次のエラーで、次のコードを有するMain()はインスタンス参照ではアクセスできません。型名で修飾代わり

にライン7に、作成開始、よりspecificalyこのMSDN tutorialスレッド間の相互作用行3:

cannot be accessed with an instance reference; qualify it with a type name instead.

Program.csの

public static ThreadTest threadTest = new ThreadTest(); 
private static Thread testingThread = new Thread(new ThreadStart(threadTest.testThread())); 
static void Main(string[] args) 
{ 

} 

ThreadTest.cs

public static void testThread() 
{ 
} 
+1

コンパイルエラーのアドバイスを試してみましたか?とにかく 'threadTest'のインスタンスが必要なのはなぜですか? –

+0

例1:スレッドの作成、開始、および相互作用http://msdn.microsoft.com/en-us/library/aa645740(v=vs.71).aspx#vcwlkthreadingtutorialexample1より具体的な3行目から7行目へのメインの作成() –

+0

右。次に、あなたの 'testThread'メソッドを見て、サンプルの' Alpha.Beta'メソッドを見て、その違いを見て、エラーメッセージをもう一度見てください。 –

答えて

27

あなたtestThreadは静的メソッドであるため、型の名前を経由して利用可能です。したがって、isntance threadTestを使用する代わりに、ThreadTestタイプを使用してください。

// public static void testThread() 
testingThread = new Thread(new ThreadStart(ThreadTest.testThread)); 

または変更メソッド宣言(staticを削除):

// public void testThread() 
testingThread = new Thread(new ThreadStart(threadTest.testThread)); 

また、あなたではなく、メソッドinvokation ThreadTest.testThread()の結果を渡すのThreadTest.testThread(削除括弧)を委任するメソッドを渡す必要があります。