Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Вопрос по поводу потоков:
Значит имеется SysTreeView32. В него выводим дерево каталогов. Есть одна фигня, которая сильно мешает(и которая присутсвует даже у виндовсэксплорера): иногда(иногда часто ), при опросе сетевого каталога, функции FindFirstFile, FindNextFile и PathFileExists сильно морозят, останавливая выполнение программы. Частично решил запуск процедуры сканирования в отдельном потоке. Но хочется чтобы можно было, по желанию, остановить поток(или каким нибудь образом прервать выполнение вышеназванных функций). В этом собственно и вопрос - как?
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Daemon писал(а):
а что если через TerminateThread?
вот выдержка из мсдн:
Цитата:
Remarks TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated. DLLs attached to the thread are not notified that the thread is terminating.
TerminateThread is a dangerous function that should only be used in the most extreme cases. You should call TerminateThread only if you know exactly what the target thread is doing, and you control all of the code that the target thread could possibly be running at the time of the termination
Поэтому весь поток убивать неохота. Попробую для начала только на PathFileExists (если ей дать несуществующий айпи, то замирает) - как больше всего мне делающей проблем.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
mein ну так почему бы не выход, даже если есть опасность? В твоем случаи поток умирает на время в виндовых дллках, проще его убрать, чем терпеть тормоза и провоцировать тормоза остальной системы, ИМХО.
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Тут ещё один вопросик по темам WindowsXP. Пишу прогу на MFC (Studio 2003). Сам я не любитель(мягко сказано) "новогодней ёлки" за рабочим местом, поэтому все темы отключаются в первую очередь. Значит вот прога обретает некий внешний вид и вроде всё замечательно, но если запустить её на "зараженном" ( ) темой(проверил на луне) винде, то моя замечательно смотревшаяся программа выглядит несколько подпорченной. В частности (и меня просто бесит - каким надо было быть дебилом чтобы додуматся до такого) в новом оформлении при равных внешних размерах окна клиентская(рабочая) область уменьшена (я борюсь за каждый милиметр рабочего пространства, а тут просто на какой-то мусор его бездарно тратят). Соответсвенно некоторые элементы моего(не резайзющегося окна) сдвигаются и некоторые просто не вмещаются. Ну а теперь вопрос: как зделать так, чтобы программа не обрастала темой при запуске или чтобы с темой, но работала правильно?
При считывание строки "Авто" на русском(кириллица),
переменной text присваивается пробел (а должно "Авто"). text = " "?????????
А с английским все нормально!
Как сделать, чтобы кириллица(русский алфовит), присваивался переменной???????????
_________________ ruSpiegel.net - русское зеркало дотнета
Ваши любимые статьи и блоги, посвященные Microsoft .NET Framework, теперь и на русском языке.
//Как сделать, так чтобы считывать строку поочередно( 1)234, 2)слово1, 3)s 4)Уход на новую строку )???????? //Внизу код считывает всю строку, а затем надо обрабатывать эту строку.
while ( text = input_f->ReadLine() )
{
//обработка строки
}
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Работаю в Visual Studio 2003 V7.1.3088 . Щас есть проэкт с десятком диалогов парочка из которых достаточно насыщены. Вот сегодня понадобился ещё один простенький диалог прикрутить и возникла проблема(она и раньше возникала, но легко решалась) и я скоро начну ломать близлежащие предметы . В общем редактор ресурсов глючит. Значит добавляю новый диалог и начинаю на него накладывать элементы, время от времени проверяя по [Ctrl+T]. В какой-то момент текст одного из контролов становится нулём ( пример: ставил static с тектом "xxx", а получил "0" )? причём это наблюдается только при преддпросмотре или уже в работе программы. Не помогает даже програмная смена текста - всё равно остаётся "0". Если "больной" элемент удалить и создать точно такойже то "заболевает" один из соседних элементов и так замкнутый круг.
Может кто-то встречался с таким?! Добавлено спустя 50 минут, 21 секунду Всё разобрался: к таким последствиям приводило выставление свойства "Auto Buddy" у спинбуттона. Правда почему так - не представляю.
Advanced member
Статус: Не в сети Регистрация: 09.03.2004 Откуда: Кишинёв
Есть такой код:
Код:
LPBITMAPINFOHEADER lpbi; // Получение данных из потока lpbi = (LPBITMAPINFOHEADER)AVIStreamGetFrame(pgf, frame); // (Пропуск заголовка для получения указателя на данные) pdata=(uchar *)lpbi+lpbi->biSize+lpbi->biClrUsed * sizeof(RGBQUAD); // и например отображаем картинку...
pdata объявлен как глобальный указатель. По идее нужно освободить память отведённую функцией AVIStreamGetFrame. Т.е. функция возвращает указатель на структуру, а вслед за структурой ещё и данные идут(размер данных я знаю). Каким образом это можно сделать? Мсдн скромно умалчивает по этому поводу(там вообще ничего не понятно ).
но она очень медленная, поэтому нужно один раз открыть и потом только выбирать(AVIStreamGetFrame) фрэймы. Получается быстро, но если глянуть на выделение памяти программой во время сика(слайдером мотать туда-сюда), то начинают волосы шевелится не только на голове .
Хотя Может это и нормально. Вот что пишут про AVIStreamGetFrame
Цитата:
Remarks The returned frame is valid only until the next call to this function or the AVIStreamGetFrameClose function.
По ходу функция сама занимается памятью и ей не надо мешать?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения