//?启动实时温度采集
                    RealtimeThread = new Thread(new ThreadStart(Realtime_TmHm));
                    RealtimeThread.Start();                    Thread.Sleep(1000);                    //空调控制  ?从数据库读取空调开关状态,进行空调开关控制--
                    RealtimeAre = new Thread(new ThreadStart(Realtime_AutoOpenAre));
                    RealtimeAre.Start();
Realtime_TmHm中不断从数据库获取最新的信息,然后相应操作后Thread.sleep(1000)
Realtime_AutoOpenAre同上,做出相应操作后sleep1秒钟
如何让温度采集线程和空调控制线程轮流启动.也就是温度采集的时候,空调控制不启动,空调控制启动的时候,
温度采集不启动

解决方案 »

  1.   

    创建一个两个线程共享的 object A, 然后在两个处理函数里面都 lock(A)
      

  2.   

    其实。你可以考虑用我这个类。带有消息机制的线程 - CustomMessageQueue c#版的代码被我删了。需要的可以留下邮箱或是我回头放csdn下载。
      

  3.   

    找到以前例子了。居然电脑上没删。
    带有消息机制的线程 - CustomMessageQueue (vb.net/c# 两种版本的源码)
      

  4.   

    刚把wuyazhe的VB代码翻译成C#了,效果真的不错:http://blog.csdn.net/mngzilin/archive/2010/06/12/5666437.aspx
      

  5.   

    private static object _mylock=new object();
                        
    // 启动实时温度采集
    RealtimeThread = new Thread(new ThreadStart(Realtime_TmHm));
    RealtimeThread.Start();// 空调控制从数据库读取空调开关状态,进行空调开关控制--
    RealtimeAre = new Thread(new ThreadStart(Realtime_AutoOpenAre));
    RealtimeAre.Start();在Realtime_TmHm方法里面开始就添加
    lock(_mylock)
    {
        Realtime_TmHm原始方法代码
    }
    Realtime_AutoOpenAre也如上操作添加就可以了
    lock(_mylock)
    {
        Realtime_AutoOpenAre原始方法代码
    }
      

  6.   

    6楼大哥的代码,System.Threading.Monitor.Enter(msgQueue);
                System.Threading.Monitor.Pulse(msgQueue);
                System.Threading.Monitor.Exit(msgQueue);跟lock是一种东西吧,增加了消息机制,借鉴一下