CreateThread和TThread混用的问题(50分)

  • 主题发起人 主题发起人 xiaqing
  • 开始时间 开始时间
X

xiaqing

Unregistered / Unconfirmed
GUEST, unregistred user!
主程序创建两个线程:<br>线程1用CreateThread创建,用于向数据表插入1000条记录,字段Flag为0表示新插入的;<br>线程2用TThread派生类创建,搜索当前新插入数据表的记录(即Flag=0),对其操作,然后将<br>每条记录的Flag置为1。<br>问题:<br>主窗体关闭事件:Form1.OnClose:释放线程1和线程2。<br>线程1的释放代码如下:<br>&nbsp; GetExitCodeThread(hMyThread, lpExitCode);<br>&nbsp; if lpExitCode = STILL_ACTIVE then<br>&nbsp; &nbsp; if TerminateThread(hMyThread, lpExitCode) then<br>&nbsp; &nbsp; &nbsp; CloseHandle(hMyThread);<br>线程2的释放代码如下:<br>&nbsp; if MyThread &lt;&gt; nil then<br>&nbsp; begin<br>&nbsp; &nbsp; if MyThread.Suspended then<br>&nbsp; &nbsp; &nbsp; MyThread.Resume;<br>&nbsp; &nbsp; MyThread.Terminate;<br>&nbsp; &nbsp; FreeAndNil(MyThread);<br>&nbsp; end;<br>当向数据表中插入少量记录(测试用10条),正常;当插入大量记录(测试用1000条),每次关闭,<br>不管此时线程1执行完毕与否,总报错:“在异步运行时,操作不能被执行”。请教各位大侠原因?<br>
 
Synchronize()
 
后退
顶部