当前位置: 代码迷 >> VC >> 多线程有关问题:执行 CreateHandle() 时无法调用值 Dispose()
  详细解决方案

多线程有关问题:执行 CreateHandle() 时无法调用值 Dispose()

热度:445   发布时间:2016-05-05 00:11:14.0
多线程问题:执行 CreateHandle() 时无法调用值 Dispose()
我在一个Form中用了一个Threading::Timer来定期执行一些任务(刷新行情等)。执行这些任务时要用到Form上的某些控件。
当用户关闭该Form时:
1、调试运行时偶尔会出现“执行 CreateHandle() 时无法调用值 Dispose()”异常。通常是头几次正常,然后就出现这个异常;
2、直接运行EXE时,则每次都自动退出程序,没有任何提示。

我已经在Form关闭事件(Closing)中执行了Threading::Timer::~Timer(),并在该Threading::Timer执行的程序中使用了标志变量来指明当前是否处在该程序运行当中,以便Closing中可以等待该程序运行完毕。
这样仍然无法消除该异常。
百思不得其解......

------解决方案--------------------
 for (int i = 0;i <= 100000;i++)
 if (!InThread)
 break;
 this->tmMain->~Timer();
}
------解决方案--------------------
你对this->tmMain的析构函数执行了10万次