本帖最后由 liubj07 于 2011-11-29 22:31:09 编辑

解决方案 »

  1.   

    运行的时候出现0xC0000005: Access violation reading location 0xfeeeff4a.
    内存访问错误
    你的两个线程要想同步,有很多种方法
    关键看你的应用比较适合哪一种
    WaitForSingleObject可以实现你的功能
    不过单进程中线程同步的话,用临界区吧,简单点感觉你要实现的功能简单,但是用到的技术却很深,适合吗?
      

  2.   

    对mfc也不是很熟悉,现在要在原来的代码中添加处理过程。想问下,临界区是在线程中任何地方添加都可以吗?还是必须在线程while循环的起始和结尾处添加~谢啦
      

  3.   

    界区是在线程中任何地方添加都可以吗?
    使用临界区的时候,要注意EnterCreticalSection和LeaveCretialSection
    它们之间的代码是原子性执行的
      

  4.   

    能再请教一个问题吗?进行数据库操作的时候,跑一段时间会出现lost connection to mysql server during query,又一次出现这个问题是在sqls1.Format(_T("SELECT H2S,SO2,SensorID FROM data JOIN topomap USING (AddrMAC) WHERE TimeTrans = '%s'"),strTimeTag);语句中,其中data表的数据很大,topomap比较小。
      

  5.   

    你为啥要在apc里面执行数据库操作.不知道用wait么?APC里面执行的东西貌似有些限制的。最好另外单开线程做数据库void startTimer(){
     HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL); LARGE_INTEGER liDueTime;
     liDueTime.QuadPart=-300000000; SetWaitableTimer(hTimer, &liDueTime, 10000, NULL,NULL,true); hThread=(HANDLE)_beginthreadex(NULL,0,timerThread,NULL,0,NULL)
     
     
    }
    unsigned __stdcall timerThread(LPVOID){
    while(g_bRun){
    WaitForSingleObject(hTimer,INFINITE);
    //......
    //时间到,做你的操作}}