QWorker中匿名作业函数访问局部变量的限制

QWorker的每个工作者(Worker)都是一个线程,即使作业被约束为在主线程中执行,作业也是异步完成了,这意味着,当函数执行结束时,由于栈被还原,栈上的变量便不再有效,如果访问其内容,可能会破坏栈上的数据,所以不应访问栈上的数据。

那么,如果想要访问栈上的变量,那就必需保证栈的正确性,而保证这一点,就要求在作业执行完成前,函数不应被退出。要保证这一点,可以使用TQForJobs.For或者TQJobGroup.Wait函数来保证函数不会在作业完成前退出。

具体的例子就不在这儿写了,使用中注意这一点就好。

滚动至顶部