Я выполняю небольшой фрагмент кода, который иногда (очень редко) нарушает доступ при прекращении / освобождении моего TThread.Я запускаю много экземпляров этих потоков, но это место, кажется, единственное, которое вызывает проблемы, и делает это только один раз каждые 500 или около того звонков.
TThreadInheritor* Base= new TThreadInheritor(1);
try {
Base->Start();
WaitForSingleObject((HANDLE)Base->Handle, 1000);
MyBaseId = Base->scanvalue;
}__finally {
Base->Terminate();
Base->Free();
}
Это выбрасывается в моем окончательно.Мое первое предположение состояло в том, что WaitForSingleObject странным образом истекает и вызывает сбой в работе Terminate и Free, но я не совсем уверен, как это произойдет.Я не изменил ничего, что связано с методами Terminate / Free, когда я унаследовал от TThread.
Кто-нибудь знает, что может вызвать нарушение доступа к этим двум методам после столь небольшого количества кода?