多线程问题:执行 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万次