【问题标题】:Make application With timers etc.? [closed]使用计时器等制作应用程序? [关闭]
【发布时间】:2011-04-18 11:49:11
【问题描述】:

我需要如下申请。

如果字段的值为 1 或 0,则需要每秒执行 10 次查询以检查数据库 (Ms SQL 2005)。如果为 1,则应用程序需要启动 Windows Media Player(全屏)和运行视频。 视频播放期间应用程序需要休​​眠,视频播放完毕后应用程序需要唤醒并关闭 Windows Media Player 并打开 Internet Explorer(全屏)并显示网站。

我不知道如何让这个我不像 Delphi 那样有经验。

【问题讨论】:

  • 将视频嵌入表单可能比启动并等待媒体播放器退出更容易。
  • @Andreas 或者更简单地将视频本身嵌入到网页中
  • I need to make an application as followed... 你不能指望我们成为你的项目经理。您当然可以收到一些指导方针,甚至更多,因为您未来应用程序的几乎每个部分都或多或少地承诺了一些好的和有趣的问题。但请记住,将所有东西放在一起的主要努力将是你的。为了有个好的开始,请听从 David Heffernan 的建议,将您的问题分成几个更具体、更切题的问题。
  • 投票结束。过于宽泛的问题。

标签: delphi delphi-2007


【解决方案1】:

TTimer 拖放到 Delphi 表单上。将计时器的时间间隔属性设置为 100(以毫秒为单位)。为检查您的数据库的OnTimer 事件分配一个事件处理程序。将Enabled 属性设置为False

当您希望计时器开始触发事件时,请将 Enabled 设置为 True。如果您想禁用它,请将Enabled 设置回False

需要注意的一点是,如果您的计时器事件处理程序的运行时间超过了计时器间隔。如果发生这种情况,那么处理程序的调用之间将不会有暂停。这不会造成任何可怕的伤害,但它可能会导致您的应用程序消耗 100% 的 CPU。一种防御技术是在事件处理程序开始时将计时器的 Enabled 属性设置为 False,然后在您退出处理程序之前返回 True。


重新阅读您的问题,我突然想到您可能在问如何访问数据库、启动媒体播放器、在视频期间休眠、等待它完成、打开 IE 等。

您不能在一个问题中询问如何完成所有这些操作(请参阅常见问题解答,了解有关 Stack Overflow 上什么是有效问题的说明)。如果你真的想知道所有这些的答案,那么我们会因为这个问题太宽泛而结束。

我上面的回答为您问题的计时器部分提供了一些方向。

【讨论】:

  • 有点混乱,在处理程序中禁用计时器将防止重新进入而不是消息累积。无论如何,计时器消息都不会累积(请参阅this answer)。但如果工作时间超过间隔,应用程序当然会使用高 CPU。
  • @sertac 我的术语可能很糟糕。重入不是问题。建立不是问题。高 CPU 是我试图查明的问题。
  • @David - 那好吧! :) 更好的防御方法是给它更长的间隔我猜.. :)
  • @sertac 仅在您可以预测处理程序需要多长时间时才有效!
  • @David - 我的意思是,禁用处理程序中的计时器不会阻止高 CPU 使用率。你至少不能取出 “消息队列将被计时器消息饱和"?
【解决方案2】:

如果您不需要 delphi 表单应用程序,您可以使用服务器端网页(php、asp.net、jsp 任何您喜欢的)来完成。

  • 初始页面加载(服务器端)会检查您的数据库(1 还是 0)?

  • 客户端页面每 n 秒刷新一次。

  • ...或播放视频并重定向到网站

  • 网站在 n 秒后重定向到初始页面。

如果您无法控制需要显示的网站,您可以在框架内调用它。

【讨论】:

    【解决方案3】:

    我不会连续轮询该记录,而是使用触发器来告诉我的应用程序值何时发生更改 - 当然,如果您可以将这样的触发器添加到数据库中。

    如果您无法添加触发器,我将使用单独的线程来检查字段更改(使用使用绑定变量准备的适当查询以避免语句重新解析开销)。线程可以在应用程序播放视频时进入睡眠状态 - 检查运行媒体播放器(嵌入与否)的最佳方式是什么,因为您需要知道它何时完成播放,我不知道这是否容易如果 Media Player 使用 ShellExecute 或 CreateProcess 作为外部应用程序运行,则获取该信息,而运行外部应用程序并等待它终止很容易。

    打开资源管理器只需使用正确的参数调用 ShellExecute(或 CreateProcess)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2021-10-30
      • 2016-03-10
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多