C# 在线程开始内部传递参数
是否可以在threadstart内部传递参数以开始执行该方法C# 在线程开始内部传递参数,c#,multithreading,C#,Multithreading,是否可以在threadstart内部传递参数以开始执行该方法 int value = 123; Thread t = new Thread(new ThreadStart(fail.DoWork(value))); Class fail { public void DoWork(int Value) } 我还可以如何在DoWork中传递此参数?您可以试试 int value = 123; fail objfail = new fail(); var t = new Thread(
int value = 123;
Thread t = new Thread(new ThreadStart(fail.DoWork(value)));
Class fail
{
public void DoWork(int Value)
}
我还可以如何在DoWork中传递此参数?您可以试试
int value = 123;
fail objfail = new fail();
var t = new Thread(() => objfail.DoWork(value));
t.Start();
你可以试试
int value = 123;
fail objfail = new fail();
var t = new Thread(() => objfail.DoWork(value));
t.Start();
你可以试试
int value = 123;
fail objfail = new fail();
var t = new Thread(() => objfail.DoWork(value));
t.Start();
你可以试试
int value = 123;
fail objfail = new fail();
var t = new Thread(() => objfail.DoWork(value));
t.Start();
我相信你也可以用lambda Expression做一些类似
Thread t = new Thread(new ThreadStart( () => fail.DoWork(value)));
我花了一段时间才把我的头绕到lambda身上,但基本上,在上面这一行发生的事情是这样的
调用一个没有参数的函数(正常调用可能有)。这由()表示。函数的实际定义是=>之后的内容,它使用参数进行调用。这与您执行以下操作的情况相同
currentMethodStartingTheThread()
{
Thread t = new Thread(new ThreadStart( CallAsParameterized() );
}
void CallAsParameterized()
{
int value = 123;
fail.DoWork(value);
}
Class fail
{
public void DoWork(int Value)
{ do whatever with the parameter value )
}
lambda表达式的唯一真正区别在于,您不必显式地使用参数编写包装函数。我相信您也可以使用lambda expression来完成类似于
Thread t = new Thread(new ThreadStart( () => fail.DoWork(value)));
我花了一段时间才把我的头绕到lambda身上,但基本上,在上面这一行发生的事情是这样的
调用一个没有参数的函数(正常调用可能有)。这由()表示。函数的实际定义是=>之后的内容,它使用参数进行调用。这与您执行以下操作的情况相同
currentMethodStartingTheThread()
{
Thread t = new Thread(new ThreadStart( CallAsParameterized() );
}
void CallAsParameterized()
{
int value = 123;
fail.DoWork(value);
}
Class fail
{
public void DoWork(int Value)
{ do whatever with the parameter value )
}
lambda表达式的唯一真正区别在于,您不必显式地使用参数编写包装函数。我相信您也可以使用lambda expression来完成类似于
Thread t = new Thread(new ThreadStart( () => fail.DoWork(value)));
我花了一段时间才把我的头绕到lambda身上,但基本上,在上面这一行发生的事情是这样的
调用一个没有参数的函数(正常调用可能有)。这由()表示。函数的实际定义是=>之后的内容,它使用参数进行调用。这与您执行以下操作的情况相同
currentMethodStartingTheThread()
{
Thread t = new Thread(new ThreadStart( CallAsParameterized() );
}
void CallAsParameterized()
{
int value = 123;
fail.DoWork(value);
}
Class fail
{
public void DoWork(int Value)
{ do whatever with the parameter value )
}
lambda表达式的唯一真正区别在于,您不必显式地使用参数编写包装函数。我相信您也可以使用lambda expression来完成类似于
Thread t = new Thread(new ThreadStart( () => fail.DoWork(value)));
我花了一段时间才把我的头绕到lambda身上,但基本上,在上面这一行发生的事情是这样的
调用一个没有参数的函数(正常调用可能有)。这由()表示。函数的实际定义是=>之后的内容,它使用参数进行调用。这与您执行以下操作的情况相同
currentMethodStartingTheThread()
{
Thread t = new Thread(new ThreadStart( CallAsParameterized() );
}
void CallAsParameterized()
{
int value = 123;
fail.DoWork(value);
}
Class fail
{
public void DoWork(int Value)
{ do whatever with the parameter value )
}
lambda表达式的唯一真正区别在于,您不必显式地使用参数编写包装函数。我更喜欢这种语法:
int value = 123;
var t = new Thread((ThreadStart)(() => fail.DoWork(value)));
t.Start();
我更喜欢这种语法:
int value = 123;
var t = new Thread((ThreadStart)(() => fail.DoWork(value)));
t.Start();
我更喜欢这种语法:
int value = 123;
var t = new Thread((ThreadStart)(() => fail.DoWork(value)));
t.Start();
我更喜欢这种语法:
int value = 123;
var t = new Thread((ThreadStart)(() => fail.DoWork(value)));
t.Start();
在这种情况下,您需要:
void Main()
{
Fail fail = new Fail();
int value = 123;
Thread t = new Thread(fail.DoWork); // same as: new Thread(new ParameterizedThreadStart(fail.DoWork));
t.Start(value);
}
public class Fail
{
public void DoWork(object value)
{
Console.WriteLine("value: {0}", value);
}
}
在这种情况下,您需要:
void Main()
{
Fail fail = new Fail();
int value = 123;
Thread t = new Thread(fail.DoWork); // same as: new Thread(new ParameterizedThreadStart(fail.DoWork));
t.Start(value);
}
public class Fail
{
public void DoWork(object value)
{
Console.WriteLine("value: {0}", value);
}
}
在这种情况下,您需要:
void Main()
{
Fail fail = new Fail();
int value = 123;
Thread t = new Thread(fail.DoWork); // same as: new Thread(new ParameterizedThreadStart(fail.DoWork));
t.Start(value);
}
public class Fail
{
public void DoWork(object value)
{
Console.WriteLine("value: {0}", value);
}
}
在这种情况下,您需要:
void Main()
{
Fail fail = new Fail();
int value = 123;
Thread t = new Thread(fail.DoWork); // same as: new Thread(new ParameterizedThreadStart(fail.DoWork));
t.Start(value);
}
public class Fail
{
public void DoWork(object value)
{
Console.WriteLine("value: {0}", value);
}
}
抛出错误“dowork匹配的委托”系统没有重载。线程。参数化线程启动“编辑了我的答案。请立即重试抛出错误“dowork匹配的委托”系统没有重载。线程。参数化线程启动“编辑了我的答案”。请尝试NOWTROWS错误“dowork匹配的代理”系统没有重载。线程。parameterizedthreadstart编辑了我的答案。请尝试NOWTROWS错误“dowork匹配的代理”系统没有重载。线程。parameterizedthreadstart编辑了我的答案。请现在试一试