是使用全局变量作为params的唯一方式,还是有更时尚的方式来做到这一点?C#线程,如何使一个线程运行带参数的方法?
回答
您可以使用ParameterizedThreadStart启动一个带参数的线程。
实施例:
Thread newThread = new Thread(myObj.DoMethod);
newThread.Start(parameter);
虽然,我通常最终使用的lambda
Thread newThread = new Thread(() => myObj.DoMethod(param1, param2, param3));
newThread.Start();
这可以更方便,因为ParameterizedThreadStart采用单个object
作为参数。这很少是我想要的。
()=>那是什么宏? (不知道来自java) –
'=>'符号是一个[lambda表达式](http://msdn.microsoft.com/en-us/library/bb397687.aspx)这是编写匿名函数的简短方法。 –
你可以使用一个简单的Action<T>
那然后调用的参数的方法,只是用一种封闭:
var thread = new Thread(() =>
{
CallSomeMethod(someParam);
});
由于root46已经回答了,如果直接使用线程然后使用ParameterizedThreadStart。如果您使用的是.NET 4或更高版本,还可以看看Task和Task Parallel Library。
这样做的更多的语言无关的方式是,当该方法只能采取一个参数,你有一个以上的数据块,创建具有属性的新类为每个你想,然后就参数传递该类的一个实例。 (这是你看到的与事件处理相关的对象EventArgs
完成的事情。)
话虽如此,使用lambdas的闭包,正如别人所说的那样,是一种相当流畅和简单的做事方式,在实践中方便。
- 1. 另一类中带参数的单独线程运行方法
- 2. 在c中使用线程中的参数运行方法#
- 3. 如何启动方法带参数的使用线程
- 4. 如何使用ruby线程在类中运行一个方法?
- 5. 如何从另一个线程使用线程的方法?
- 6. 如何在子线程结束后在主线程中运行一个方法?
- 7. 从另一个线程运行线程
- 8. 线程方法未运行?
- 9. 如何从一个带参数的线程返回一个值?
- 10. 使用线程并行运行方法
- 11. 如何在Android的另一个线程中运行方法?
- 12. 的Windows线程(C运行时,并行线程,的std ::线程)
- 13. 运行两个线程[c]
- 14. 运行C++线程()
- 15. 两个参数一个C#线程
- 16. 带线程的程序/方法流程
- 17. C线程参数
- 18. 运行在一个线程
- 19. C#线程方法
- 20. VB9带多个参数的新线程
- 21. 运行线程的run()方法的线程已经完成
- 22. 在主线程/程序终止时运行一个方法?
- 23. C#线程方法返回一个值?
- 24. 如何使用线程运行一个简单的函数
- 25. 如何将参数传递给c多线程中的线程
- 26. 运行的线程在C#
- 27. 如何运行一个线程在python外线程中调用的函数
- 28. C#线程 - 一个线程数组,其中每个线程包含一个带有图像的表单
- 29. C#方法中带参数的线程使用相同的变量
- 30. 在C#中运行两个带有两个线程名的Url
使用全局变量作为线程的参数可能是最简单的方法。 – millimoose