Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Using Example 1: Creating, starting, and interacting between threads on this MSDN tutorial more specificaly line 3 to line 7 in the Main()

I have the following code with the following error:

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()
{
}
like image 982
Jordan Trainor Avatar asked Nov 24 '12 20:11

Jordan Trainor


People also ask

How do I fix cs0176?

Solution. To fix this error, ensure that you access the static variable directly using the class name instead of the instance name as the qualifier.

What is an instance reference in C#?

Instance = Object. Reference = A variable that holds bit patern which points to the Object in the Memory (Heap). Example: public class Car {


1 Answers

Your testThread is a static method, so it's available via type name. So, instead of using isntance threadTest, use ThreadTest type.

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

Or change method declaration (remove static):

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

Also you should pass method to delegate ThreadTest.testThread (parentheses removed) instead of passing result of method invokation ThreadTest.testThread().

like image 117
Sergey Berezovskiy Avatar answered Oct 06 '22 02:10

Sergey Berezovskiy