日期:2014-05-17  浏览次数:21037 次

求助,关于线程调用非静态方法
是这样的,
Thread thread = new Thread(new ParameterizedThreadStart(SendPickNotice));
提示不能引用非静态方法或字段。

我尝试将SendPickNotice方法加上static ,但里面用了this.控件,所以方法不能用static了

这怎么解决?

另外,我在click事件里实例thread线程 就可以调用非静态的SendPickNotice?为什么?我想到了事件是委托的一种,是不是说我要定义一个委托来用线程?那具体怎么写?

好像这些问题有点笨~~~但找了半天不知道怎么搜索相关的资料,求助各位了,先谢谢

------解决方案--------------------
static xxx xxxxx()  // 把红色部分删除
{
  Thread thread = new Thread(new ParameterizedThreadStart(SendPickNotice));
}
------解决方案--------------------
LZ是想通过点击按钮,生成并启动线程吗?
------解决方案--------------------
public static Thread thread;
某些方法里面来new
public void test()
{
thread = new Thread(new ParameterizedThreadStart(SendPickNotice));
}
这个thread就可以全局了,new可以在其他方法里。
------解决方案--------------------
引用:
Quote: 引用:

LZ是想通过点击按钮,生成并启动线程吗?


点击按钮只是启动线程,我想把线程定义成公共的


LZ可以使用委托来做

delegate ThreadMethod();// 可以带参数
ThreadMethod delegateMethod;

// 绑定委托
delegateMethod += Click;

// 假定该方法实现委托
public void Click() {
}

// 线程绑定委托,如果提示STATIC,则可以在委托申明上加入STATIC试试