我这样写线程会有问题吗?400分求助
jaffy 2009-02-03 04:54:29 这个帖子只能200,解决后发另一个帖子给分
我有个框架程序,这个框架程序中有两个线程,一个线程是显示进度,另一个运行业务
流程,之前将业务流程都写在本地程序中;后来为了扩展需要,将他们都分散集成在不
同DLL中,这些DLL都是包含界面的,然后由框架中的PANEL内嵌显示。我的业务流程就是
调用这些DLL的接口函数。
但现在问题来了,程序运行中会出现异常崩溃的情况,并且在DEBUG状态下非常常见,但
每次出现的位置不一样。出现错误后也无法定位,都是弹那个汇编窗口出来了,要么就
是报我的DLL有异常?还有就是"CANVAS DOES NOT ALLOW DRAWING"。
我估计是线程同步的问题,
下面是我的线程代码(非常简单,就是调用主框架中的某个函数)
__fastcall TMainThread::TMainThread(bool CreateSuspended,int index)
: TThread(CreateSuspended)
{
FreeOnTerminate=true;
m_index = index;
}
//---------------------------------------------------------------------------
void __fastcall TMainThread::Execute()
{
//---- Place thread code here ----
//Synchronize(UpdateMainForm);
Main->ThreadExecute(m_index); //调用主程序中的流程函数。
}
我之所以将Synchronize屏蔽了,是因为我发现如果这样调用的话,主框架完全无法响应
用户操作,我之前将代码放在主程序中时也是这样做的,从来没有这样频繁报错。
现在我想问的是,这样写线程到底有没有问题,会是DLL的问题吗?如果必须将代码放在DLL中调用,如何避免出错?