-2

シャットダウンタイマーを作ろうとしています。つまり、指定された時間のタイマーを開始し、その後コンピューターをシャットダウンするように設定します。インターネットと原因のスタックオーバーフローを検索しましたが、自分のシャットダウンイベントの時間を計って画面に表示するために使用するのに役立つものは見つかりません。

4

1 に答える 1

0

何を試しましたか?

プログラムの終了時にタイマーをアクティブのままにしたい場合は、タスク プレーナーを使用することをお勧めします。実行時間を定義し、一度だけ実行して後で削除するように設定できます。( http://www.thewindowsclub.com/schedule-shutdown-restarts-windows-7-task-schedular )

それ以外の場合は、アプリケーション内にタイマーを作成し、適切なイベントをバインドすることができます。

どちらも管理者権限が必要です。


時刻を表示するには、フォームに表示するものが必要です。たとえば、ラベル。次に、次のようにします。

    private void button1_Click(object sender, EventArgs e)
    {
        var x = new Timer();
        x.Tick += new EventHandler((obj, eventargs) => {
            var t = obj as Timer;
            var tag = (int)t.Tag;

            label1.Text = string.Format("{0:0.0}s until shutdown", tag/10d);
            t.Tag = tag - 1;

            if (tag == 0)
            {
                t.Enabled = false;
                MessageBox.Show("I shall initiate the shutdown here!", "Brace yourself!");
                Process.Start("shutdown", "/s /t 10"); // Do the actual shutdown here
            }

        });
        x.Interval = 100;
        x.Tag = 30;
        x.Enabled = true;
    }

カウントダウンを中止したい場合は、ローカル変数をフォームのプライベート フィールドに昇格させます。そうすれば、いつでもタイマーを無効にすることができます。

于 2013-03-22T20:00:35.380 に答える