有下面为一段线程的run函数的代码:
{
  while(loop)
   {
     if (DBconnFlag)     
        scanpara();
     else       //当DBconnFlag为FASLE的时候接受消息
     {
      if (msg.hWnd!=0)
       {
         TranslateMessage(&msg);
 DispatchMessage(&msg);
         continue;
        }
      switch(msg.message)
      {
      case DBFALSE:       //自定义消息
          if (!DBConnectFlag)  //另外一个线程已经改变了DBconnFlag的值,但是此时并没有实时的反映出来! 
{
                   ……
             }
            else
           {
                   ……
}
       continue;   //继续循环
      }
    }
  }
}
 
 请问怎样才能让DBconnFlag的值在我判断的时候为最新的值?

解决方案 »

  1.   

    好象不行啊,BOOL  DBConnectFlag = FALSE;加上volatile后,报错:unresolved external symbol "int  DBConnectFlag" (?DBConnectFlag@@3HA)
      

  2.   

    还有一个问题想请教一下,我在一个线程里同时打开了四五个记录集,为什么当我把其中任意一个记录集的GetDefaultConnect中的字符设为错误的时候,或者由于其他原因,而打不开记录集的时候,程序就非法退出?!