Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98

Ttread CreateFile

20.07.2016, 15:42. Показов 688. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос такой. Создал поток.
В нем вызываю функцию, которая обращается к форме (выводит сообщения)
C++
1
2
3
    while(!Terminated){
        Synchronize(RxMess);
    }
И при включении потока (вот код создания нового потока при открытии формы)
C++
1
2
    reader1 = new RxCan(true);  //создать и запустить поток чтения байтов
    reader1->FreeOnTerminate = true; //устано
в Uint.cpp, глобально
C++
1
RxCan *reader1; // указатель на поток данных
функция RxMess обращается через указатель к классу Prot (мой класс), который объявлен в Uint.cpp, т.е. в форме, как глобальная переменная.

ИТОГ. при запуске потока форма тормозит (почти что зависает)

Класс Prot, с которым работает поток и форма обращается к портам ввода вывода синхронно.....через createFile...дело в этом?
В синхронном обращении?

Или, тот факт, что форма использует объект глобальный Prot из формы?

При этом я в форме не манипулирую пока что с объектом Prot (у меня два экземпляра данного объекта, в потоке один использую пока что в форме другой)
Форма тормозит без моих активных действий...отклик в лучшем случае 2 секунды. В функции потока вызывается метод класса Prot, на проверку вхордного буфера..если есть сообщения- вывожу из потока.

Добавлено через 2 минуты
CreateFile имеет два атрибута , определяющий способ работы..синхронный и асинхронный

Я подумал, сделать синхронный, но прием/передачу (в данном контексте можно скачать чтение/запись )разнести по потокам....

и вот вышел трабл...
Поток работает всегда..и непрерывно в цикле проверяет буфер с помощью класса Prot, пр наличии сообщений выводит его

Добавлено через 5 минут
Synchronize я еще грешу на нее.....
Если дело в нем, то тогда следует разделить вывод на форму и проверку в бесконечном цикле....
тогда заработать долдно...правильно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.07.2016, 15:42
Ответы с готовыми решениями:

CreateFile()
Всем добрый вечер. Проблема с директорией записи файла (пишет в директорию екзешника) эта проблема происходит после запуска...

CreateFile() LPCTSTR
Помогие плиз, разобраться с проблемой. Использую функцию CreateFile(). LPCTSTR lpszSystemInfo; lpszSystemInfo =...

Создание и копирование файлов с использованием функций CreateFile и CopyFile
Напишите пожалуйста программу, которая копирует файлы. Файлы создать с использованием функции CreateFile и копировать с использованием...

3
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
20.07.2016, 15:48
Сразу вопрос: что за тип RxCan?
В функцию Synchronize должен передаваться адрес функции (имя функции, перед которым стоит знак &).
0
11 / 1 / 1
Регистрация: 02.10.2015
Сообщений: 98
20.07.2016, 16:07  [ТС]
RxCan - название потока....я для своего удобства сменил стандартное название
C++
1
class RxCan : public TThread
Ну я плохо помню, но вроде имя функции и есть адрес, поэтому насчет взятия адреса я не уверен...

Вот сей час переписываю код, чтобы syncronize была только функция вывода в окно, при появлении сообщения, а все проверки и т.п. были без него..

Добавлено через 5 минут
НАРОД...ВОПРОС снялся...я Synchronize забивал поток формы
Переписал все и заработало (отрпавка на форму синхронная , а проверки асинхронные)..

Добавлено через 4 минуты
Жалко у Архангельского про это пару строчек...в итоге получилось так...создал поток....метод Synchronize дождался своего момента, пока главный поток не перейдет в ожидание и запустил бесконечнй цикл...в это время главный поток был в ожидании завершения Synchronize...

Мб кому поможет..
Большие функции методом Synchronize не обрабатывайте...тем более долгие проверки (ьеск циклы и т.п.)
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
20.07.2016, 16:37
Цитата Сообщение от Oryel Посмотреть сообщение
Мб кому поможет..
Большие функции методом Synchronize не обрабатывайте...тем более долгие проверки (ьеск циклы и т.п.)
Это известно. В противном случае пользы от потока никакой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.07.2016, 16:37
Помогаю со студенческими работами здесь

Чтение и запись в один и тот же файл с CreateFile
Добрый день. необходимо, чтобы можно было открыть файл, произвести из него чтение, и в процессе считывания при необходимости вносить...

CreateFile()
Как передать указатель на имя файла в функцию CreateFile(). Имя в структуре struct struct1 { char name; } ...

CreateFile
Опрашиваю все съёмные носители и далее использую функцию CreateFile вот таким образом invoke CreateFile, drive, GENERIC_WRITE,...

CreateFile() и потоки
Возможно ли открыть файл, чтобы разные потоки имели одновременный доступ к файлу для чтения и не изменяли указатель перемещения файла?

Ошибка в CreateFile.
Пишу консоль. Когда передаю файл в функцию CreateFile, получаю ошибку INVALID_HANDLE_VALUE. char filename; printf("Введите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru