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 に答える