private System.Threading.Thread m_drawthread = new System.Threading.Thread(Drawmethod);报错,字段初始值设定项无法引用非静态字段方法活属性
时间: 2024-08-13 20:10:16 浏览: 51
C#中三种定时器对象的比较
这个错误提示意味着你在尝试在初始化`m_drawthread`字段(这是一个Thread类型的实例)的时候,使用了一个非静态的方法`Drawmethod`。在C#中,静态成员可以直接通过类名访问,而非静态成员需要先创建类的实例才能调用。
`System.Threading.Thread`的构造函数通常期望接收一个可执行的委托或方法作为参数,以便在其内部运行指定的代码。由于`Drawmethod`不是一个静态方法,所以你需要先创建`this`(当前对象的引用)然后再调用`Drawmethod`,就像这样:
```csharp
private System.Threading.Thread m_drawthread = new System.Threading.Thread(() => Drawmethod());
```
或者
```csharp
// 如果Drawmethod在一个非静态类中的实例方法
private System.Threading.Thread m_drawthread = new System.Threading.Thread(this.Drawmethod);
```
这里的关键是要传递一个指向`Drawmethod`的实际方法调用的引用,而不是直接写方法名称。
相关问题:
1. 非静态方法如何传递给Thread构造函数?
2. 静态和非静态方法的区别是什么?
3. 在初始化实例字段时如何引用非静态方法?
阅读全文