Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93

Нажатие кнопки тормозит фоновый поток

07.04.2017, 14:11. Показов 7390. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть приложение Windows Form на C# (visual studio 2010) с одной
кнопкой (функция кнопки пустая)! В приложении создаю еще один поток (ставил
разные приоритеты),который получает Ethernet пакеты из сети каждые 10 мс,
и после каждого полученного пакета сразу же отсылает отвентый пакет (см. рисунок).
Когда нажимается кнопка, то отдельный поток "подвисает" (см. рисунок)! В клоне
этого приложения, написанном на MFC(С++) такого не происходит, хотя перенес все один в один!
Как сделать так, чтобы НАЖАТИЕ кнопки не ВЛИЯЛО на остальные потоки процесса?
Миниатюры
Нажатие кнопки тормозит фоновый поток  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.04.2017, 14:11
Ответы с готовыми решениями:

Как заставить дочерний поток реагировать на нажатие кнопки
Как в дочерних потоках генерировать исключения по нажатию на кнопку? При остановке генерации и отлова дочерние потоки должны продолжать...

Чем отличается фоновый поток от не фонового?
Добрый день. receiveThread.IsBackground = true; Что значит, если устанавливаю это свойство в true, что именно изменится?

Фоновый поток не отслеживает изменение глобальной переменной
есть некая глобальная переменная int i=0; и есть событие кнопки, которое меняет значение этой переменной i=1; есть некий фоновый...

49
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
09.04.2017, 10:39
Студворк — интернет-сервис помощи студентам
Валеронище, а в режиме Release тестируете? А то в папке Release exe-шника нет.
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
09.04.2017, 12:04  [ТС]
Вот проект на MFC. Случайные задержки достигают лишь 15 мс, и это хоть обнажимайся кнопкой, по сравнению с ФОРМОЙ, в которой каждое нажатие тормозит поток на 30 - 50мс!!!
Вложения
Тип файла: rar 111.rar (187.9 Кб, 2 просмотров)
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
09.04.2017, 12:07  [ТС]
Да все равно в каком режиме, результат неизменен! Обычно у меня всегда релиз стоит!
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
09.04.2017, 12:12  [ТС]
Почему мои сообщения перенаправляются в быстрый ответ, а в общей теме нет?
0
09.04.2017, 17:31

Не по теме:

Цитата Сообщение от Валеронище Посмотреть сообщение
Почему мои сообщения перенаправляются в быстрый ответ, а в общей теме нет?
В смысле? Это ты о сообщении которое ты отправил три раза и дубли которого я только что удалил?

0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
09.04.2017, 18:14
Цитата Сообщение от Валеронище Посмотреть сообщение
Вот проект на MFC. Случайные задержки достигают лишь 15 мс
11 мс.
На .Net - 13 мс.
Не вижу значимой разницы.

IMHO вы ловите блох, ожидаете невозможной стабильности в не-RTOS, и заблуждаетесь в возможностях потоков.
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
09.04.2017, 20:48  [ТС]
Почему тогда во время посылки пакетов с интервалом 10 мс, хоть двигая форму, хоть что делая, задержка достигает погрешности не более 0,0011 с, стоит только понажимать кнопку то сразу разница увеличивается до 0,005с ??? С чем это связано! Я же все показал в самом первом сообщении, как это отражается на общую работу приложения (см. рис первого сообщения)? И почему-то в MFC такого не наблюдается, что же не так с КНОПКОЙ в Форме???? Я бы забил и писал на MFC, но полюбился мне C#! А то что не RTOS, это понятно и так, но речь в моей проблеме совсем не об этом, имеющий глаза, да увидит! Может студию другую установить???
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
09.04.2017, 21:04
Потому что см выше:
Я не наблюдаю огромной разницы между примерами на Net и MFC;
Вы считаете фатальным совершенно нормальное поведение программы в ОС;
Вы ставите тесты для сферической среды в вакууме, отключая всё лишнее и надеясь, что программа в таких условиях и будет эксплуатироваться.

Вы, кстати, заметили, что проект на Net занимает 130 МБ, а на MFC всего 10 МБ по показаниям студии?

Добавлено через 29 секунд
Можете попробовать линукс для сравнения.

Добавлено через 1 минуту
Также есть возможность соединять нативный и управляемый код.
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
09.04.2017, 21:30  [ТС]
Это потому, что я с проекта MFC удали папки релиз и дебаг! Ну, или если вы имели ввиду, что проект на NET сам по себе более увесистый? Кстати, а можно ли сделать так, чтобы в результате после компиляции получился один файл exe безо всяких сборок Framework и дополнительных, которые используются, чтобы все свелось в один файл и запускалось даже там, где не установлен Framework????
Кстати, моя программа как раз таки и предполагает эксплуатирование именно в таком режиме, как Вы сказали, в ВАКУУМЕ
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
09.04.2017, 21:33
Нет, я про объём памяти, занимаемый процессом.
Нередко спрашивают. Нет, нельзя.
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
10.04.2017, 09:17  [ТС]
Тогда подскажите, как откомпилировать мой проект со вставкой следующего класса (см. скрин)?
Хочу попробовать запустить поток при помощи WinAPI, и посмотреть результат!
Миниатюры
Нажатие кнопки тормозит фоновый поток  
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
10.04.2017, 09:48
Лучше уж создайте объект в неуправляемом коде с функциями запуска и остановки. Dll запилите на VC++.
Чтобы всё, что относится к отправке, работало только там.
1
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
10.04.2017, 10:03  [ТС]
То есть, сначала на VC++ создать dll, в которой будет мой класс отправки пакетов, а затем в проекте c# подключить функции из этой dll и создав небезопасный объект, использовать их, я правильно понял?
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
10.04.2017, 10:06
В принципе да.
Можно вызвать функцию через pinvoke, которая создаст объект и вернёт указатель на него.
Потом можно вызывать другие функции, которые будут по переданному им указателю вызывать методы объекта.
И удалить не забыть по завершении программы.
1
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
10.04.2017, 14:10  [ТС]
Буду пробовать, так как кнопка не дает покоя. Но нашел проще вариант, - создал чекбокс, клацаю на нем, задержек нет почему то (хотя по сути это та же самая кнопка), могу использовать ее в своей проге вместо кнопки, накрайняк 😀!

Добавлено через 3 часа 42 минуты
а создание отдельного потока и функцию времени задержки тоже в dll поместить?
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
10.04.2017, 14:14
Да.
Но я вам ещё раз напоминаю: такой метод задержки, грузящий ядро на 100%, - хрень. А если ваш код на него полностью опирается, то он тоже...
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
10.04.2017, 14:20  [ТС]
а куда деваться, если мне нужно оперировать с более-менее стабильными 10мс задержки в виндозовских реалиях?!
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
10.04.2017, 14:23
Менять ОС, например.
Может опишите исходную задачу?
0
0 / 0 / 2
Регистрация: 04.07.2014
Сообщений: 93
10.04.2017, 14:26  [ТС]
Задача банальная была, добиться примерных 10 мс, чтобы слать пакеты с таким интервалом именно в Винде. Пример такой задержки я нашел с применением высокоточного каунтера! Метод слип выдает минимум 15 мс
0
Эксперт .NET
 Аватар для Rius
13832 / 7905 / 1709
Регистрация: 25.05.2015
Сообщений: 24,004
Записей в блоге: 14
10.04.2017, 14:35
Ради чего нужно передавать пакеты с таким интервалом?
У слипа можно получить минимум в 1 мс, но это другая история.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.04.2017, 14:35

Эмулировать нажатие кнопки мыши или нажатие клавиши на Web - странице
Здравствуйте. Как на эмулировать переходы по страницам на сайте, открытом в Интернет эксплорере!. Например: В определенные...

Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки
Нажатие каждой кнопки приводит к ее сокрытию и показу ранее скрытой кнопки. При этом номер (название) ранее скрытой кнопки отображается в...

Нажатие кнопки приводит к изменению цвета формы и заголовка кнопки
Помогите пожалуйста так сделать : "Нажатие кнопки приводит к изменению цвета формы на синий, а надпись на кнопке меняется".

Привязать выполнение действия кнопки на нажатие кнопки Enter
У меня кнопка - Button, выполняет такое то действие, не подскажите, как привязать выполнение действия этой кнопки на нажатие кнопки Enter?

Определить нажатие кнопки Home и кнопки сворачивания приложения
По аналогии с backPressed: @Override public void onBackPressed() { }


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru