我有多线程的小问题。我使用CreateThread创建自己的线程并在程序启动时创建它(抱歉,但此时我不能使用VCL线程)。所以我的线程与我的VCL表单一起工作。所有的程序生活第二线程生活。但这里有一个问题。当VCL表单要终止我的线程时,可以检查一些表单(类)参数。当然,当我的主窗体已经终止并且一些线程尝试检查这种形式的方法时...然后我访问了违规。从线程访问
我怎样才能在我的VCL表格中保证检查参数?谢谢!
这是我的代码。
unsigned int WINAPI CheckMutex(LPVOID lpParam)
{
const int def = 20;
int Cnt = def;
UnicodeString text;
while (1)
{
if (!UpdFrm || !UpdFrm->Label8 || UpdFrm->MutexTerminate)
break;
首先检查指向UpdFrm的指针,但VCL表单可以终止,但指向形式仍然活着。所以这就是为什么我检查现有的一些控制。只有在此之后,我检查MutexTerminate
在窗体的析构函数中,你可以设置'UdpFrm'变量为NULL。但是这并不能消除'UdpFrm'可能是非-NULL当你第一次检查它,然后在你可以访问它的成员之前变为NULL。为什么不在表单被释放之前终止线程? – 2013-05-04 00:24:42