Ошибка в коде, который вы не вставили, сразу после com.Start();
. Например, если эта функция возвращает, com
выходит из области видимости, что также приводит к выводу строки из области видимости. Вместо этого сделайте это:
CComunicator *com=NEW CComunicator(_T("10.1.1.105"), 4502, CommunicatorCallback);
com->Start();
Это приведет к утечке памяти, поэтому вам нужно delete com;
, когда вы закончите с этим. Лучший способ может быть таким:
UINT CComunicator::ThreadFunc(LPVOID pParam)
{
UNIT ret = ((CComunicator*)pParam)->_ThreadFunc();
delete (CComunicator *)pParam;
return ret;
}
Другие возможности включают сохранение объекта в области видимости до тех пор, пока вы не будете уверены, что поток завершен (если поток, создавший объект, может оставаться в той же области действия, пока поток объекта не будет завершен) и подсчет ссылок на объект, где поток содержит ссылку на объект.