多线程的程序A,如果A里面的某个地方报错,那么A里面所有的线程是否也会因此而停止运行?因为在下想在A里面开一个线程和另一个程序B保持通讯,B负责监视A的运行状态,如果A报错,我希望A里面那个负责和B通讯的线程也能停止运行。这样B就能知道。呵呵!不知道这样笨否?(我是让A的一个线程每5秒写一次当前系统时间到数据库里,让定时B检查一下A写的那个时间是不是距离现在时间很远了,若发现不对头,就干掉进程A,然后重启A)。
     大家帮忙想想啊,我这么做好不好啊?有什么疏漏么?

解决方案 »

  1.   

    呵呵,楼主的意思是不是说A可能出现出错对话框,这样虽然A已经出错了,但是由于没点出错对话框的按钮而A里面发送时间的现成可能还在正常运行?用SetErrorMode()设置出错后错误代码传递给程序本身处理,这样只要有错误A就直接退出
      

  2.   

    上面的大哥,我不知道该在哪里写SetErrorMode(),很多地方可能报错,是不是每个地方都写啊?
    据说有种方法是检测错误窗口,如果能发现那也不错的办法。不知道如何检测错误窗口,哪位朋友知道能否告示?
      

  3.   

    看楼主是什么类型的工程,SetErrorMode()函数用在程序开始执行处,设置一次就可以了,并不是每个可能出错的地方都需要设置.如果有Main()或WinMain(),这样:
    int APIENTRY WinMain(HINSTANCE hInstance,
                         HINSTANCE hPrevInstance,
                         LPSTR     lpCmdLine,
                         int       nCmdShow)
    {
      // TODO: Place code here. SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);/这里
    }一般框架的就在App的InitInstance()函数开始处加SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX)
      

  4.   

    如果设置程序出错后自动退出成功,那么建议楼主用FindWindow()找A,找到就正常,找不到就启动A,毕竟为了这个功能读写数据库影响性能有点得不偿失
      

  5.   

    rageliu(长白山的水怪居然是假的 近期目标是还债!!!等有钱了去) :
    谢谢你的帮助,我感觉心情豁然开朗了!呵呵。
    祝你春节愉快!多拿奖金!!!再次表示感谢啊