1,105,386 Community Members

How to run a non-static method in a thread

Member Avatar
WDrago
Junior Poster in Training
88 posts since Dec 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

All,

How do I get the readSensor() method to run in threads?

Thread location1Thread;
Thread location2Thread;

Logger location1 = new Logger("187.20.150.20", 2000);
Logger location2 = new Logger("187.20.150.21", 2000);

// The next 2 lines lines result in the following error message:
// "An object reference is required for the non-static field, method, or property...
location1Thread = new Thread(location1.readSensor);
location2Thread = new Thread(location2.readSensor);

I don't know how to resolve the error. Can anyone help me with this?

Thanks,
Bill

Member Avatar
tinstaafl
Postaholic
2,012 posts since Jun 2010
Reputation Points: 559 [?]
Q&As Helped to Solve: 402 [?]
Skill Endorsements: 35 [?]
 
0
 

Try this:

location1Thread = new Thread(location1.readSensor());
location2Thread = new Thread(location2.readSensor());
Member Avatar
WDrago
Junior Poster in Training
88 posts since Dec 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Can't use parenthesis there, generates error: "Method name expected" with a red squiggly under location1.readSensor()

Currently the red squiggly is under location1Thread and location2Thread. With the error message noted in my original post.

Thanks anyway...

-Bill

Member Avatar
WDrago
Junior Poster in Training
88 posts since Dec 2010
Reputation Points: 0 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

I solved this problem. The following lines have to be in main(), not in the class that contains main(). I don't understand why.

Thread location1Thread;
Thread location2Thread;

Anyone?

Thanks,
Bill

Member Avatar
darkagn
Veteran Poster
1,199 posts since Aug 2007
Reputation Points: 279 [?]
Q&As Helped to Solve: 216 [?]
Skill Endorsements: 21 [?]
 
0
 

The problem is that you were attempting to access a member variable from a static context (ie the Main method). You need to either use variables local to your static method or move the initialisation of the threads to the constructor and instantiate your class as an object first.

You
This article has been dead for over three months: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article