[英]c# thread method
如果我有
public void Method(int m)
{
...
}
如何为此方法创建线程?
线程t =新线程((方法));
t.Start(米);
不管用。
您可以使用lambda表达式执行此操作。 C#编译器在后台自动创建ThreadStart
委托。
Thread t = new Thread(() => Method(m));
t.Start();
请注意,如果稍后在代码中更改m
,则更改将传播到线程(如果尚未输入Method
。 如果这是一个问题,你应该复制m
。
您调用的方法需要一个参数。 因为它有一个参数和返回类型的void,您可以使用以下内容
ThreadPool.QueueUserWorkItem(o => Method(m));
您无需使用此方法将int更改为方法签名中的对象。
使用ThreadPool比手动启动自己的Thread更有优势。 线程与ThreadPool
ThreadStart tsd = new ThreadStart(ThreadMethod);
Thread t = new Thread(tsd);
t.Start();
线程方法需要是一个返回类型为void且不接受任何参数的方法。
public void ThreadMethod() {.....}
另一个变体是ParameterizedThreadStart
ParameterizedThreadStart ptsd = new ParameterizedThreadStart(ThreadParamMethod);
Thread t = new Thread(ptsd);
t.Start(yourIntegerValue);
ThreadParamMethod是一个返回类型为void并接受一个object类型参数的方法。 但是你可以传递任何东西作为对象。
public void ThreadParamMethod(object arg) {.....}
方法需要使用对象而不是int才能使用ParameterizedThreadStart委托。
因此,将m更改为对象并首先将其转换为int。
请试试:
Thread t = new Thread(new ThreadStart(method));
t.Start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.