向C#中线程调用的函数发送参数?
向C#中线程调用的函数发送参数, 这是我的代码:向C#中线程调用的函数发送参数?,c#,C#,向C#中线程调用的函数发送参数, 这是我的代码: myThread = new Thread(new ThreadStart(myfunc)); myThread.Start(i); public void myfunc(int i) { ... } 我得到一个错误: “installDrivers”与委托匹配时没有重载 “system.Threading.ThredStart” 使用以下命令: myThread = new Thread(new ParameterizedThrea
myThread = new Thread(new ThreadStart(myfunc));
myThread.Start(i);
public void myfunc(int i)
{
...
}
我得到一个错误:
“installDrivers”与委托匹配时没有重载
“system.Threading.ThredStart”
使用以下命令:
myThread = new Thread(new ParameterizedThreadStart(myfunc));
myThread.Start(i);
public void myfunc(object i) {... }
它可能对您的问题有用使用此选项:
myThread = new Thread(new ParameterizedThreadStart(myfunc));
myThread.Start(i);
public void myfunc(object i) {... }
它可能对您的问题有用您可以使用
你的功能呢
public void myfunc(object i)
{
int myInt = Convert.ToInt32(i);
}
你可以用一个
你的功能呢
public void myfunc(object i)
{
int myInt = Convert.ToInt32(i);
}
另一个选项是,利用lambdas可以轻松调用具有任意数量参数的函数,它还可以避免在一个参数的情况下从
对象
进行相当糟糕的转换:
int paramA = 1;
string paramB = "foo";
var myThread = new Thread(() => SomeFunc(paramA, paramB));
myThread.Start();
public void SomeFunc(int paramA, string paramB)
{
// Do something...
}
另一个选项是,利用lambdas可以轻松调用具有任意数量参数的函数,它还可以避免在一个参数的情况下从
对象
进行相当糟糕的转换:
int paramA = 1;
string paramB = "foo";
var myThread = new Thread(() => SomeFunc(paramA, paramB));
myThread.Start();
public void SomeFunc(int paramA, string paramB)
{
// Do something...
}
除非您使用的是C#<2.0,否则不需要创建委托。您可以让编译器隐式地为您创建它
myThread = new Thread(myfunc);
myThread.Start(i);
public void myfunc(object i)
{
int i2 = (int)i; // if i is an int
}
但是请注意,Thread
构造函数只接受两种类型的委托:一种是无参数的(ThreadStart
),另一种是接受对象
参数的(ParameterizedThreadStart
)。这里我们使用第二个。除非您使用的是C#<2.0,否则不需要创建委托。您可以让编译器隐式地为您创建它
myThread = new Thread(myfunc);
myThread.Start(i);
public void myfunc(object i)
{
int i2 = (int)i; // if i is an int
}
但是请注意,
Thread
构造函数只接受两种类型的委托:一种是无参数的(ThreadStart
),另一种是接受对象
参数的(ParameterizedThreadStart
)。所以这里我们使用第二个。+1是正确答案,但是使用Convert.ToInt32
而不是简单的int-myInt=(int)i代码>?我的参数是bool数组,如何将它们从对象转换为bool数组?+1是正确答案,但是否有理由使用convert.ToInt32
而不是简单的int myInt=(int)I代码>?我的参数是bool数组,如何将它们从对象转换为bool数组?sari-bool[]arrBool=(bool[])o
其中o
是函数参数。sari-bool[]arrBool=(bool[])o
其中o
是函数参数。