Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 12
.NET 4.x

Мультипоток и Controls.Add

03.07.2012, 08:23. Показов 2196. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В проге есть массив ProgressBar'ов, независящих друг от друга и выполняющих одинаковые функции. Сейчас их значения меняются в цикле в одном потоке, но возникла идея вынести каждый ProgressBar в отдельный поток.
1) Будет ли прирост в оптимизации вследствие такого мультипотока?
2) Насколько я знаю, все объекты, которые затронуты в потоке, должны в нем же и создаваться. В связи с этим проблема возникает с командой Controls.Add, которую поток не воспринимает. Можно ли заставить поток воспринимать эту команду, или можно же как-то обойти эту проблему?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2012, 08:23
Ответы с готовыми решениями:

Почему не работает Controls.Add()?
Всем добрый день. Я не так давно начал изучать C# и вот появилась проблема, которую я не смог решить самостоятельно. А именно вот. С...

Методы Controls.Clear и Controls.Remove активируют форму. Можно ли это запретить?
При вызове методов Control.ControlCollection.Clear() и Control.ControlCollection.Remove(Control control) при динамическом обновлении...

Ошибка: Window does not contain a definition for 'Controls' and no extension method 'Controls'
Решил заняться c#, но что-то не могу разобраться. имеется некоторое количество textBox'ов (textBox1, textBox2...). Через цикл хотел...

4
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
03.07.2012, 11:13
Цитата Сообщение от Grimzz Посмотреть сообщение
Будет ли прирост
Если вы действительно выполняете несколько задач (например, расчетов) независимо друг от друга, то да.

Цитата Сообщение от Grimzz Посмотреть сообщение
должны в нем же и создаваться
И в нём же меняться. https://www.google.ru/search?h... =&aq=f&oq=
0
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 12
03.07.2012, 12:00  [ТС]
SandWraith, по вашей ссылке нашел интересную функцию Invoke, которая похоже мне и нужна. Но, так как я в программировании новичок, то не совсем понял, как она применяется на практике. Не могли бы вы в двух словах объяснить, как с её помощью создать, допустим, два ProgressBar в разных потоках?
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
03.07.2012, 14:04
Допустив, вы хотите обратиться к контролу control "потокобезопасно", в этом слуае можете использовать конструкцию вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        void SetProgressBarValue(int value)
        {
            if (this.InvokeRequired)
            {
                // Сейчас мы не в том потоке, что владеет контролом progressBar
                // если мы сейчас изменим значение Value, то получим Exception,
                // вместо этого делаем Invoke:
 
                this.Invoke((Action<int>)SetProgressBarValue, value);
            }
            else
            {
                // Сейчас мы не в том потоке, что владеет контролом progressBar,
                // можно менять значение:
 
                progressBar.Value = value;
            }
        }
Если вы вызываете эту функцию из потока-владельца формы (в данном примере), то this.InvokeRequired в false и вы присвоите значние, иначе вы вызываете SetProgressBarValue еще раз и на этот раз он будет вызыван из правильного потока, т.е. метод вызывает сам себя из другого потока, если был вызван не из него.
1
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 12
03.07.2012, 14:43  [ТС]
SandWraith, ситуация немного прояснилась, спасибо огромное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.07.2012, 14:43
Помогаю со студенческими работами здесь

Отличие Controls.Add(); от .Parent =
TextBox text = new TextBox(); text.Parent = this; text.Bounds = new Rectangle(20, 125, 75, 20); в чём отличие? TextBox text...

this.Controls + picturebox.Image
Добрый день, имеется такая проблема. this.Controls.Text = &quot;dddd&quot;; Работает превосходно а вот this.Controls.Image = new...

Копирование Panel с controls
Есть panel1 с контролами (pic1) который находится в другом panel2 с scrollbar нужно для panel2 сделать несколько копий panel1 по нажатию...

Проверить Controls на пустоту
Мне нужно проверить несколько контроллов на пустоту: Пока я могу только проверить Все TextBox'ы на форме. foreach (Control c in...

Microsoft MAPI Controls
Народ подскажите где взять описание методов используемых Microsoft MAPI Controls 6.0 все перерыл найти не могу И еще вопросик ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru