为什么向ListView中添加数据,手动没问题,自动程序就崩溃?
我用下面的代码向一个ListView添加数据,
TListItem *ItemT = new TListItem( PSForm->ListViewPSShow->Items );
/*TListItem *ItemT;*/
ItemT = PSForm->ListViewPSShow->Items->Add();
ItemT->Caption = String( pCurrPs->PsData.PID );
ItemT->SubItems->Add( String( pCurrPs->PsData.PPID ) );
ItemT->SubItems->Add( pCurrPs->PsData.PsName );
ItemT->SubItems->Add( String( pCurrPs->PsData.ThreadNum ) );
可为什么当把该段代码写到按钮中,手动点击按钮添加就没有问题,
而使用一个线程自动调用,程序就马上崩溃?用Debug说是错误发生在ListView VCL内部。
当加入一个MessageBox( NULL, "asd", NULL, NULL );(源代码,写asd只是为了随便显示点东西。目的是要确认运行到那里了,当时还没想要下断点)后,Debug说错误发生在VCL内部,但不在ListView VCL中,在一个什么Message中。无论线程是否使用TThread都一样。基本上确认相关代码中没有指针有问题(因为除了以上几句外,其它全是纯C++和API的代码,没有与BCB或VC相关的东西。且在VC中调试通过的(只是调的函数不一样,BCB中调用以上代码,VC中是空函数),所以相关指针不应该有错,反复查看了好几遍啦都)。