2013-03-22 35 views
-2

我试图做一个关闭计时器。意思是启动一个给定时间的计时器,然后将计算机设置为关闭。我搜索了因特网+ stackoverflow,我找不到任何有用的东西来同时使用我自己的关机事件并在屏幕上显示它。给定事件的计时器

+0

你可以做一个.NET Forms Application。在页面上放置一个计时器控件。在带有标签控制的页面上显示计数器,向下递减计数。然后一旦完成。使用Shell调用关闭命令,或在内部使用WMI或Process.Start(“shutdown”,“/ s/t 0”); – ApolloSoftware 2013-03-22 20:04:01

+0

您希望*计算机*在应用程序计时器到期时关闭? re:你在下面的答案中的评论,一个计时器没有屏幕上的存在。如果你想看到定时器倒计时,你需要为它创建自己的显示组件。编辑你的问题,并给我们更多关于你想要做的事情的信息。 – 2013-03-22 20:15:51

回答

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; 
    } 

:然后你就可以做如下。这样你可以随时禁用定时器。

+0

我不希望程序关闭后计时器处于活动状态。我想自己管理定时器。我试过system.timers.timer,system.threading.timers和第三个。我无法让它显示在屏幕上。 – user1868569 2013-03-22 20:05:48