我在设计一个与数据库有关的应用程序,希望应用程序空闲(没有接受任何输入)5分钟后就自动关闭或注销为保护状态,必须再次登陆才能继续工作。怎么办?

解决方案 »

  1.   

    用多线程吧!
    数据库的相关操作放在辅助线程的执行函数中执行,然后辅助线程不断发送自定义消息,由主线程判断,如果辅助线程在处理就返回TRUE否则返回FALSE,然后主线程根据这个判断。比较两个消息的时间差就可以,达到5分钟就CUT了。消息要是你自己定义,产生消息的时间作为一个域,这里举个小例子,你自己试试。
    消息体结构:
    {
    消息标识;
    消息产生时间;
    消息的处理返回值;
    }
    然后辅助线程(处理数据库的线程)每处理一次就发送一条信息,并且消息的返回值为TRUE,
      

  2.   

    sundytu(晶晶)的建议挺好的,当然不必那么麻烦,使用Timer是可以的,发现有数据库相关操作时,对Timer复位,这样Timer到5Min时,你就可以做什么注销之类的事情了
      

  3.   

    对于应用程序是当前活动的应用程序的情况:你可以用当前活动窗口的OnKeyDown事件进行监听,来设置计时器。
    对于应用程序不是当前活动的应用程序的情况,利用Application的OnActivate事件和OnDeactivate事件来设置计时器。
    以上是我的一些经验,已经实践过了,功能实现了,但感觉不简洁。
    猜想:
    最好对所有的输入和输出在应用程序设计时考虑必须经过的公共通道(就象上面说的KeyDown事件)。也许还可以重载WndProc方法来实现。
    如果有了简单的方法请告诉俺一声。