Not only does ThreadStart
expect void methods, it also expect them not to take any arguments! You can wrap it in a lambda, an anonymous delegate, or a named static function.
Here is one way of doing it:
string res = null;
Thread newThread = new Thread(() => {res = sayHello("world!");});
newThread.Start();
newThread.Join(1000);
Console.Writeline(res);
Here is another syntax:
Thread newThread = new Thread(delegate() {sayHello("world!");});
newThread.Start();
The third syntax (with a named function) is the most boring:
// Define a "wrapper" function
static void WrapSayHello() {
sayHello("world!);
}
// Call it from some other place
Thread newThread = new Thread(WrapSayHello);
newThread.Start();