C# :参数 1:无法从"void"转换为"System.Threading.ThreadStart
时间: 2024-11-15 15:29:48 浏览: 5
C#线程定义和使用方法详解
在C#中,当你试图将一个方法作为`Thread`类的`ThreadStart`类型的参数传递时,出现`无法从'void'转换为'System.Threading.ThreadStart'`这样的错误是因为`ThreadStart`是一个委托类型,它期望接受一个无返回值的方法并返回`void`。
如果你的原始方法没有返回类型(即`void`),那么你需要将其修改为返回`void`,或者创建一个新的带有返回类型的方法来替换它。例如:
**原方法(无返回类型):**
```csharp
private void MyMethodWithoutReturn()
{
// 方法体...
}
```
**修改为返回`void`的方法:**
```csharp
private void MyMethodWithReturn()
{
// 方法体...
}
// 使用新方法作为ThreadStart参数
private void StartThreadUsingNewMethod()
{
ThreadStart startMethod = new ThreadStart(MyMethodWithReturn);
Thread thread = new Thread(startMethod);
thread.Start();
}
```
**或者,如果你不想改变原有方法,可以通过匿名方法或 lambda 表达式创建新的 `ThreadStart`:**
```csharp
private void StartThreadUsingLambda()
{
ThreadStart startMethod = () => MyMethodWithoutReturn(); // 匿名方法
Thread thread = new Thread(startMethod);
thread.Start();
}
```
在这个例子中,你应该选择适合你代码风格的方式修改原始方法或者创建一个新的方法。
阅读全文