对象引用用于非静态字段相同类

问题描述:

内以相同的类中,我有:对象引用用于非静态字段相同类

public partial class MainWindow : Window { 
// event handler 
private static void messageReceived (object sender, messageReceivedEvent args) 
{ 
    //some code 
    stopProcesses() 
} 
void stopProcesses() 
{ 
    //some code 
} 
} 

在事件处理程序,调用stopProcesses()得到标题中的错误:一个对象引用是非静态字段,方法或属性'MainWindow.stopProcesses'需要。 它们在同一个类中,并且我不能将stopProcesses设置为静态,因为如果类是静态的而且不是重点,则必须具有每个变量和每个方法。 我不知道如何从静态事件处理程序中调用非静态方法,但是,该方法的对象引用是什么?

+3

为什么不能让'messageReceived'实例方法呢? – Jamiec

+0

你真的需要'messageReceived'是静态的吗?使它成为一个实例方法(即移除'static')并且错误将会消失。 –

最好的解决方案是让messageReceived实例的作用域代替静态。

private void messageReceived (object sender, messageReceivedEvent args) {} 

如果你想保持静态,那么你必须使用sender实例,它应该是一个参考回到你的MainWindow例如,所有你需要做的就是投它。

private static void messageReceived (object sender, messageReceivedEvent args) 
{ 
    ((MainWindow)sender).stopProcesses(); 
}