2012-11-24 5 views
15

Stosując Przykład 1: Tworzenie, wyjściowego i interakcji między nićmi na tej MSDN tutorial bardziej specyficznie linia 3 do pozycji 7 w Main()nie można uzyskać dostępu za pomocą odwołania do instancji; zakwalifikować go nazwą typu zamiast

I mają następujące kod następującym błędu:

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

Czy podążyłeś za próbą porady podanej w błędzie kompilatora? Dlaczego mimo to chcesz wykonać instancję 'threadTest'? –

+0

Przykład 1: Tworzenie, uruchamianie i interakcja między wątkami http://msdn.microsoft.com/en-us/library/aa645740(v=vs.71).aspx#vcwlkthreadingtutorialexprzykładanie bardziej szczegółowej linii 3 do linii 7 w menu głównym() –

+0

Dobrze. Teraz spójrz na swoją metodę 'testThread' i spójrz na przykładową metodę' Alpha.Beta', spójrz na różnicę i spójrz na komunikat o błędzie. –

Odpowiedz

27

Twój testThread jest metoda statyczna, więc jest ona dostępna za pośrednictwem nazwy typu. Dlatego zamiast używać isntance threadTest, należy użyć typu ThreadTest.

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

Albo zmiana deklaracja metoda (usunąć static):

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

Ponadto należy podać sposób przekazać ThreadTest.testThread (nawiasy usunięte) zamiast przechodzenia wynik metody invokation ThreadTest.testThread().

Powiązane problemy