Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Simple multi-threading - combining statements to two lines

If I have:

ThreadStart starter = delegate { MessageBox.Show("Test"); };
new Thread(starter).Start();

How can I combine this into one line of code? I've tried:

new Thread(delegate { MessageBox.Show("Test"); }).Start();

But I get this error:

The call is ambiguous between the following methods or properties: 'System.Threading.Thread.Thread(System.Threading.ThreadStart)' and 'System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart)'

like image 322
Adam Avatar asked Jan 23 '23 07:01

Adam


1 Answers

new Thread(() => MessageBox.Show("Test")).Start();

or

new Thread((ThreadStart)delegate { MessageBox.Show("Test"); }).Start();

or

new Thread(delegate() { MessageBox.Show("Test"); }).Start();

The problem is when you declared a delegate without specifying how many parameters it had, the compiler didn't know whether you meant ThreadStart(0 parameters) or ParameterizedThreadStart(1 parameter).

like image 99
Yuriy Faktorovich Avatar answered Feb 04 '23 23:02

Yuriy Faktorovich