为什么我无法使用实例引用访问此方法?

时间:2013-07-03 09:48:42

标签: c# events

我正在尝试记录用户不活动状态,但是当我尝试调用获取系统空闲时间的方法时,它会抛出错误说

"Member 'NotifyIcon.Inactivity.GetIdleTime()' cannot be accessed with an instance reference; qualify it with a type name instead"

这是我获取用户空闲时间的自定义事件

private void Inactivity_Inactive(object sender, EventArgs e)
{
    inactivity.GetIdleTime();
}

以及获取空闲时间的代码的方法

public static uint GetIdleTime()
{
    LASTINPUTINFO lastInput = new LASTINPUTINFO();
    lastInput.cbSize = (uint)Marshal.SizeOf(lastInput);
    GetLastInputInfo(ref lastInput);

    return (uint)Environment.TickCount - lastInput.dwTime;
}

任何和所有帮助将不胜感激=]

3 个答案:

答案 0 :(得分:3)

静态方法不需要对其类的对象进行实例引用才能运行,因为它们不引用任何非静态字段,属性或方法。

当C#编译器检测到您在对象引用上调用static方法时,它怀疑您想要调用其他方法,并发出您看到的错误。

替换

inactivity.GetIdleTime();

NotifyIcon.Inactivity.GetIdleTime();

解决此问题。

答案 1 :(得分:1)

不需要使用静态方法进行实例引用。

试试这个:

NotifyIcon.Inactivity.GetIdleTime();

答案 2 :(得分:0)

public static uint GetIdleTime()不是实例方法。

相反,您需要致电:

NotifyIcon.Inactivity.GetIdleTime();