一个超难的题,我的一个高手朋友都没有办法.如下:在控制台(DOS)下实时的检测一个变量的改变,注意这里是控制台,没有消息这个概念.

解决方案 »

  1.   

    楼上的兄弟,如果我要用FOR的话,你觉得我会在这里问吗...?  呵...
      

  2.   

    你以为消息就是实时的吗?
    消息还不如for循环。
      

  3.   

    兄弟,我不是那个意思.我是善意的.希望你理解.因为FOR会让机器很累的,让别的程序也用的很慢,当然不是一个明智的先择.消息好像不是用FOR的吧.因为他一点也不耗资源.
      

  4.   

    消息是投放到队列里就不管了。
    处理消息还要靠循环,差别只是在于GetMessage没有消息的时候并不返回,这样没有消息的时候时间片就被系统窃取了。
    你在for循环中释放时间片是一样的。
    比如:
    for ...
    begin
      // 做某些事
      SleepEx(5, false);
    end;
      

  5.   

    不要看不起循环,消息也要用循环才能获取
    占用资源什么,那是因为你的代码没写好,不要怪循环
    消息循环怎么不耗CPU?你可以用循环和Event对象,在循环里用WaitForSingleObject
      

  6.   

    技术上面没有谁看不起谁的,只是要找到相对于最优的方案.谢谢二位的解答.现在我有一个SOCKET单元.这个单元传门接受数据,然后放在一个TLIST列表里面...我的主DOS程序就检测这个TLIST里面是否有值,如果有就运行A这个过程...你们能不能写一个DEMO,我能明白你们语句的精华就行了.再次谢谢.
      

  7.   

    var
      G_DataChangeEvent : TSimpleEvent;
      G_Data : Integer;...
        Dec(G_Data);
        G_DataChangeEvent.SetEvent;
    ///////////////////////////////////////////////////////////////////////////////
      while True do
      begin
        WaitForSingleObject(G_DataChangeEvent.Handle,INFINITE);
        G_DataChangeEvent.ResetEvent;    WriteLn(G_Data);
      end;//////////////////////////////////////////////////////////////////////////////////