ну если переменная sckt - глобальная, то должно закрыть. Или же если эта переменная "пришла" в поток как параметр, то тоже закроет...
И вообще, какая ошибочка? Они как бы разные бывают...
void MyClass::SocketRoutine(){
sckt.connectToHost("localhost",3421);
while(1){
тут читаем данные. Запущено в отдельном потоке.
}
}
void MyClass::Stop(){
sckt.close();
}
Вот т.к. SocketRoutine() и Stop() в разных потоках вызываются и я предполагаю что в цикле сразу после вызова close() будет выход т.к. соединение будет оборванно (по аналогии я также делал с обычными синхронными сокетами в виндовс и линукс, то есть я в цикле жду данных, в другом потоке вызываю close(), recv возвращает -1 и я выхожу из цикла.) Этот вариант в моей реализации ОЧЕНЬ желателен, по своим причинам.
Забыл сказать какая ошибка. В винде в дебажной сборке асерт вызывается: Can't send event from another therad. То есть хотелось бы что-нибуть потоко безопасное достать.
попробуй сделать так, как товарищ советует... И отпишись о результатах... Если это сработает, то я перестану уважать Qt. Это ж как извращаться нужно, вместо того, чтобы класс нормально написать. Сам на работе использую классы, которые инкапсулируют низкоуровневые операции с сокетами... и тоже используется вся эта байда в похожей схеме потоков, но никаких проблем нету!