发新帖我要提问
12
返回列表
打印

为什么我的程序运行 易导致系统蓝屏呢??

[复制链接]
楼主: llljh
手机看帖
扫描二维码
随时随地手机跟帖
21
huwr| | 2017-12-24 18:09 | 只看该作者 回帖奖励 |倒序浏览

应该是对的

使用特权

评论回复
22
ousj| | 2017-12-24 18:11 | 只看该作者
写APP能blue screen的也是高手了,呵呵。

使用特权

评论回复
23
pangb| | 2017-12-24 18:14 | 只看该作者
以前折腾WDM的时候,每天蓝屏N次的调试,多亏是公司的电脑不心疼硬盘。

使用特权

评论回复
24
zyf部长| | 2017-12-24 18:17 | 只看该作者
以前折腾WDM的时候,每天蓝屏N次的调试,多亏是公司的电脑不心疼硬盘。

使用特权

评论回复
25
llljh|  楼主 | 2017-12-24 18:30 | 只看该作者
_fastcall   communicationThread::communicationThread(char*projectname):TThread(true)       //线程以挂起状态创建
{
        sdata=new   saveData();
        sdata-> Createfile(projectname);
        g_wavedata=0;
        FreeOnTerminate=true;
        Resume();                             
}
//---------------------------------------------------------------------------
  _fastcall     communicationThread::~   communicationThread(void)     //   类的析构函数
  {
        delete   sdata;
        sdata=NULL;
  }
//---------------------------------------------------------------------------
void   _fastcall   communicationThread::Execute(void)                           //通讯线程
{
        unsigned   long   ByteNumber=0;
        while(!Terminated)
        {
                unsigned   short   i=0;
                if   (   ReadFile(Hpipe,   &buffer[0],   128,   &ByteNumber,   NULL))//加上这句   就出问题了   不加则无任何问题


commThread=new   communicationThread(frmTestenter-> path);           //   通讯子线程开启
commThread-> Priority   =tpTimeCritical;

使用特权

评论回复
26
llljh|  楼主 | 2017-12-24 18:36 | 只看该作者
这是结束线程
if   (   commThread   )
        {
                commThread-> Terminate()   ;
                commThread=NULL;
        }

使用特权

评论回复
27
pangb| | 2017-12-24 18:38 | 只看该作者
蓝屏是USB驱动造成的,   是ReadFile的参数有误或驱动本身有问题.

使用特权

评论回复
28
llljh|  楼主 | 2017-12-24 18:41 | 只看该作者

问题解决,   问题出在线程结束时.

使用特权

评论回复
29
pangb| | 2017-12-24 18:43 | 只看该作者
如果清理工作放在析构函数里   在某些很极端的情况下   可能会出问题     放在OnTerminate事件里还是好一些   .


不知道大家遇到过这样的问题没有

使用特权

评论回复
30
zwll| | 2017-12-24 18:56 | 只看该作者
楼上的几位说的析构什么的,只要是对于事件逻辑清晰,不会有问题,即使有问题,也不会蓝屏。

使用特权

评论回复
31
chuxh| | 2017-12-24 18:59 | 只看该作者
可以直接调用Application->Terminate推出应用程序,让windows替你释放你没有释放的内存,以此来证明和析构没有关系。

使用特权

评论回复
32
juventus9554| | 2017-12-24 19:01 | 只看该作者
哦,有道理,BCB做的程序不会蓝屏。

使用特权

评论回复
33
pangb| | 2017-12-24 19:04 | 只看该作者

建议最简单的方法,查看任务管理器,盯住进程内存使用那项,大概就能看出来

使用特权

评论回复
34
stly| | 2017-12-24 19:06 | 只看该作者
lz说的蓝屏是单纯的电脑蓝屏还是说?

使用特权

评论回复
35
llljh|  楼主 | 2017-12-24 19:07 | 只看该作者
多谢各位大师,我再慢慢琢磨

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则