1

我开发了一个 Windows 窗体程序(一个带有用户登录的 E-POS),但作为一项要求,我希望它在 30 分钟后将用户从系统中注销。我找到了以下代码并使用它,但我得到了错误:

字段初始值设定项不能引用非静态字段、方法或属性...

_TimerTick通过出现在代码中的第一个实例。

private System.Threading.Timer timer = new System.Threading.Timer(
    _TimerTick,
    null,
    1000 * 30 * 60,
    Timeout.Infinite);

private void _OnUserActivity(object sender, EventArgs e)
{
    if (timer != null)
    {
        timer.Change(1000 * 30 * 60, Timeout.Infinite);
    }
}

private void _TimerTick(object state)
{
    var myLogin = new LoginForm(this);
    myLogin.userCode = null;
    MainControlsPanel.Hide(); 

    // the user has been inactive for 30 minutes; log him out
}
4

1 回答 1

0

我的意见是在你的类构造函数中分配你的计时器:

代替

private System.Threading.Timer timer = new System.Threading.Timer(
_TimerTick,
null,
1000 * 30 * 60,
Timeout.Infinite);

我会使用类似的东西:

    class YourClass
{
private System.Threading.Timer timer;
public YourClass()
{
    timer = new System.Threading.Timer(
    _TimerTick,
    null,
    1000 * 30 * 60,
    Timeout.Infinite);
}
//...
}

或者有另一种方法来演练

于 2013-10-20T16:25:43.940 回答