禁用按钮t分钟

时间:2016-02-18 02:57:31

标签: c# .net winforms

我想禁用一个按钮20分钟,即使应用程序重新启动,也应该保持禁用状态。

我想通过读取和存储按下按钮的时间来做这件事,然后每分钟读取系统时间,当经过的时间是20分钟或更长时间时,启用按钮。

我认为如果应用程序重新启动,这将允许我恢复按下按钮的时间;然后检查经过的时间。

你认为这是个好主意吗? 还有其他选择吗?

3 个答案:

答案 0 :(得分:3)

由于您希望此设置即使应用程序重新启动也能正常工作,除非您涉及外部代理,否则无法实现此功能。您可能尝试的一些选项包括:

  1. http://time.windows.com或nist等读取当前的Internet时间并将其存储在某处(注册表或本地文件)。在您的应用程序中使用一个计时器,该计时器不断从Internet获取最新时间并将其与保存值进行比较。 This post允许您使用HTTP和TCP端口13读取当前的Internet时间。

  2. 使用Windows计划任务。在某处设置bool标志(文件/注册表再次)并要求计划任务在20分钟后清除标志。 This post可以帮助您创建计划任务。

  3. 创建一个在后台运行的Windows服务,您可以调用该服务来设置标志以及此标志应保持设置的时间长度。该服务应该运行一个内部Timer(并且不应该依赖系统时间)来跟踪" ticks"。在指定的时间过后,服务应清除标志。

答案 1 :(得分:1)

这就是我的想法,

  1. 当应用程序启动时,禁用或隐藏按钮
  2. 设置禁用/隐藏和存储在数据库表或文件中的时间戳。
  3. 现在每隔五分钟或每五分钟阅读一次 - 无论哪个方便,看看是否已经过了20分钟。
  4. 如果过了20分钟,请从表格或文件中删除该条目。
  5. 如果应用程序在设置时间戳之前崩溃或重新启动: 1.设置时间戳时,请确保表或文件为空。如果没有,启用计时器 - 时间戳就在那里。

答案 2 :(得分:-1)

如果我是你,我基本上禁用了按钮 然后启动一个计时器,每个minuite,程序应该写一个文件剩余的时间以及当前时间(你也可以解密这个文件,这样用户就无法改变它)

现在程序重新启动时,它应该读取此文件,并根据fil中的写入时间启动计时器:)

如果您希望计时器在程序关闭时工作,那么您可以查看(File.GetLastAccessTime

基本上,您应该将已写入fil的(当前时间)与上次访问时间进行比较,并创建一个函数来获得剩余时间:)

这可能不是一个完美的解决方案,但它会正常工作(我猜)

亲切的问候:)