如何在c#中使用参数启动线程?
当前回答
使用lambda的简单方法是这样的..
Thread t = new Thread(() => DoSomething("param1", "param2"));
t.Start();
或者你甚至可以像这样使用ThreadStart委托…
private void DoSomething(int param1, string param2)
{
//DO SOMETHING...
ThreadStart ts = delegate
{
if (param1 > 0) DoSomethingElse(param2, "param3");
};
new Thread(ts).Start();
//DO SOMETHING...
}
或者使用。net 4.5+甚至更干净,像这样..
private void DoSomething(int param1, string param2)
{
//DO SOMETHING..
void ts()
{
if (param1 > 0) DoSomethingElse(param2, "param3");
}
new Thread(ts).Start();
//DO SOMETHING..
}
其他回答
使用lambda表达式的一种非常简单和方便的方式是这样的:
Thread thread = new Thread( (param) => {
string name = param as string;
// rest of code goes here.
});
thread.Start("MyName");
通过这种方式,lambda表达式可以具有参数并在单独的线程中运行内联代码。
您可以使用BackgroundWorker RunWorkerAsync方法并传入您的值。
是的:
Thread t = new Thread (new ParameterizedThreadStart(myMethod));
t.Start (myParameterObject);
你可以使用一个paramtrizedthreadstart委托:
string parameter = "Hello world!";
Thread t = new Thread(new ParameterizedThreadStart(MyMethod));
t.Start(parameter);
class Program
{
static void Main(string[] args)
{
Thread t = new Thread(new ParameterizedThreadStart(ThreadMethod));
t.Start("My Parameter");
}
static void ThreadMethod(object parameter)
{
// parameter equals to "My Parameter"
}
}
推荐文章
- 转换为值类型'Int32'失败,因为物化值为空
- c#中有任何连接字符串解析器吗?
- 每n秒运行特定代码
- 在Linq中转换int到字符串到实体的问题
- 是否可以动态编译和执行c#代码片段?
- 创建自定义MSBuild任务时,如何从c#代码获取当前项目目录?
- c#和Java的主要区别是什么?
- 在c#中创建一个特定时区的DateTime
- .NET中的属性是什么?
- csproj文件中的“Service Include”是干什么用的?
- 如何使用try catch进行异常处理是最佳实践
- 替换字符串中第一次出现的模式
- .NET中字节的字面后缀?
- 同步vs锁定
- 在ExecutorService的提交和执行之间进行选择