啊我在线程编程中非常棒,只是开始创建多个线程的基本步骤,所以我用Google搜索并获得了一些关于在c#中创建Thread的片段,这里是我发现的片段:
public MyThread(string name) {
count = 0;
thrd = new Thread(new ThreadStart(this.run)); // here m getting error
thrd.Name = name;
thrd.Start();
}
// Entry point of thread.
void run() {
Console.WriteLine(thrd.Name + " starting.");
do {
Thread.Sleep(500);
Console.WriteLine("In " + thrd.Name +
", count is " + count);
count++;
} while(count < 10);
Console.WriteLine(thrd.Name + " terminating.");
}
}
错误是 The best overloaded method match for System.Threading.Thread.Thread(System.Threading.ParameterizedThreadStart) has some invalid arguments
为什么Thread构造函数要求我提供ParameterizedThreadStart对象,我希望传递简单的ThreadStart对象 .
另一件事是ThreadStart类没有带有1个参数的构造函数,即它需要0个参数,但在片段中它们显示了 new ThreadStart(this.run)
这个?使用C#2008
这是完整的代码
using System;
using System.Threading;
class MyThread {
public int count;
public Thread thrd;
public MyThread(string name) {
count = 0;
thrd = new Thread(new ThreadStart(this.run));
thrd.Name = name;
thrd.Start();
}
// Entry point of thread.
void run() {
Console.WriteLine(thrd.Name + " starting.");
do {
Thread.Sleep(500);
Console.WriteLine("In " + thrd.Name +
", count is " + count);
count++;
} while(count
3 回答
不知道为什么它不起作用,但你可以尝试:
从
run
方法组到ThreadStart
委托的转换是隐式的 .我怀疑你在
System.Threading.ThreadStart
和代码中其他地方定义的另一种类型之间存在名称冲突...尝试将插入符号放在ThreadStart
并按F12转到声明我已经完成了你给我们的不完整的例子,我没有遇到相同的编译器错误 .
这应该是绝对正常的,因为有an overload取
ThreadStart
而不是ParameterizedThreadStart
.我怀疑这里还有其他的东西......你能提供一个简短而完整的例子来证明这个问题吗?
除了缺少类声明本身和变量声明之外,您的代码为我编译没有问题: