Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
1

Как грамотно организовать потоки для правильного обращения к элементам управления

19.09.2014, 13:26. Просмотров 901. Ответов 23
Метки нет (Все метки)

Всем привет, нужна помощь,а то программа зависает, когда я запихиваю в таймер, выполнение программы, то выскакивает следующая ошибка cross - thread operation not valid control datagridview accessed from a thread than the thread it was created on, а еще бывает, работает норм, потом-оп 2 DGV превращаются в красные конверты, пожалуйста опишите грамотно как обойти эту ошибку
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2014, 13:26
Ответы с готовыми решениями:

Реализация обращения к схожим элементам управления в цикле
Попробую сформулировать. Можно ли к элементам управления обращаться так, чтобы...

Грамотно организовать документооборот в организации
Всем доброго дня. Может быть мой вопрос не к месту и не в том разделе, то...

Привязка данных к элементам управления
На форме есть TreeView и TextBox. Никак не могу разобраться как привязать...

Отображение подсказок к элементам управления формы
Вроде бы всё сделал, а подсказки не отображаются при наезде мышки?

Органайзер. Как можно каждую ячейку DataGridView сделать как класс для удобного обращения
Здравствуйте. Скажите пожалуйста ,а как можно каждую ячейку DataGridView...

23
Roman_P
11 / 11 / 5
Регистрация: 22.08.2013
Сообщений: 77
Завершенные тесты: 1
19.09.2014, 13:38 2
Можно код посмотреть?
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 14:24  [ТС] 3
вот архив
0
Вложения
Тип файла: rar 1.rar (9.4 Кб, 6 просмотров)
Roman_P
11 / 11 / 5
Регистрация: 22.08.2013
Сообщений: 77
Завершенные тесты: 1
19.09.2014, 14:37 4

Не по теме:

Ну, я ждал проект, а так придётся разбираться в смысле каждой кнопки)



Добавлено через 3 минуты

Не по теме:

Ого, да тут ещё и 3 формы, я так не играю(



Добавлено через 4 минуты
Сомневаюсь, что кто-то, тут так разберётся, буду ждать папку проекта...
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 14:52  [ТС] 5
Блин в архиве весит 27 мб весь проект
0
Памирыч
Почетный модератор
20877 / 8761 / 1080
Регистрация: 11.04.2010
Сообщений: 11,013
19.09.2014, 15:19 6
visak, на яндекс диск можно выложить, если форум не принимает
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 17:35  [ТС] 7
Это всё из за таймера, как его организовать чтобы не ругался на данную ошибку
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
19.09.2014, 19:23 8
vb.net
1
tTimer.Interval = 60000 'Интервал 2с.
Это 1 минута не, а 2 секунды
vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If DataGridView1.Rows(1).Cells(1).Style.BackColor = Color.Empty Then
              DataGridView1.Rows(1).Cells(1).Style.BackColor = Color.Green
        For I = DataGridView1.Rows.GetFirstRow(DataGridViewElementStates.Displayed) To  _
               DataGridView1.Rows.GetLastRow(DataGridViewElementStates.Displayed)
        For Each Cell In DataGridView1.Rows(I).Cells
        ' если не выгружено, то выделяем
            Cell.Style.BackColor = IIf(DataGridView1.Item(0, I).Value = , Color.LightBlue, Color.Red)
         Next
Next I
        Button39_Click(sender, e)
        DataGridView1.Rows(2).Cells("№ заявки").Value.ToString()) Then DataGridView1.Rows(1).Cells(1).Style.BackColor = Color.Green
    End Sub
В чем вообще смысл этого таймера?

Для того чтобы по условию выделять (раскрашивать) строки таймер не нужен! достаточно запихнуть обработку условия в событие Paint
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 19:57  [ТС] 9
Лучше скинуть весь проект?
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 20:52  [ТС] 10
Когда я нажимаю кнопку Button39, он загружает и всё норм, но когда я пытаюсь вставить в таймер нажатие кнопки BUTTOn39, то всё начинают валить ошибки с потоком, гуру и эксперты здесь я бессилен)
0
Вложения
Тип файла: rar Парсинг777.rar (615.2 Кб, 3 просмотров)
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
19.09.2014, 22:42 11
Твои попытки бессмысленны т.к. Button39 ты создаешь в основном потоке, а запущенный тобой системный!!! таймер запускается в другом потоке и не может обращаться к элементам интерфейса, вынеси функционал который выполняется в Button39.Click в отдельную процедуру и обращайся уже к ней
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 22:45  [ТС] 12
dimsaratov, а можешь написать,как правильно вынести функционал, чтобы моя задумка работала? =)
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
19.09.2014, 22:59 13
Нет, потому что я не знаю твою задумку
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
19.09.2014, 23:02  [ТС] 14
dimsaratov, задумка - это нажатие кнопи Button39 каждую минуту, ну и чтобы ошибки не выскакивали
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
20.09.2014, 03:25  [ТС] 15
И вот иногда появляются вместо DGV такие вот красные конверты....(
0
Миниатюры
Как грамотно организовать потоки для правильного обращения к элементам управления   Как грамотно организовать потоки для правильного обращения к элементам управления  
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
20.09.2014, 07:50 16
Повторяю
Цитата Сообщение от dimsaratov Посмотреть сообщение
таймер запускается в другом потоке и не может обращаться к элементам интерфейса, вынеси функционал который выполняется в Button39.Click в отдельную процедуру и обращайся уже к ней
0
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
20.09.2014, 14:07  [ТС] 17
dimsaratov, Создал
vb.net
1
2
 Private Sub FillCombo()
End Sub
весь программный код Button 39 туда залил, но он всё равно пишет ошибку.
vb.net
1
Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'DataGridView2' не из того потока, в котором он был создан.
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
20.09.2014, 14:26 18
DataGridView элемент интерфейса и доступа к нему из другого потока нет, но есть доступ к объекту DataTable который должен быть источником для DGV
Я тебе с самого начала говорил что DGV не предназначен этого

Добавлено через 6 минут
Читай здесь:
http://msdn.microsoft.com/ru-ru/libr...v=vs.110).aspx
0
Roman_P
11 / 11 / 5
Регистрация: 22.08.2013
Сообщений: 77
Завершенные тесты: 1
20.09.2014, 14:33 19
Лучший ответ Сообщение было отмечено visak как решение

Решение

Возможно это жуткий костыль, т.к. в коде я не разбирался...
в таймере, для вызова функции нажатия на кнопку 39 используй такой синтаксис:
vb.net
1
Me.Invoke(Sub() Button39_Click(sender, e))
или
vb.net
1
Button39.Invoke(Sub() Button39_Click(sender, e))
1
visak
2 / 2 / 5
Регистрация: 08.09.2014
Сообщений: 143
20.09.2014, 14:49  [ТС] 20
Roman_P, Пока тестирую, всё работает, Если красные конверты не появятся то вуаля=), кстати не знаешь,почему они появляются?
0
20.09.2014, 14:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.09.2014, 14:49

Написать программу, использующую для обращения к элементам массива указатели
Переписать данную программу, используя для обращения к элементам массива...

Переписать код для обращения к элементам матрицы, находящимся выше главной диагонали
Тут пример решения матрицы который содержит нули ниже главной диагонали; А мне...

Как для правильного треугольника и правильного четырёхугольника вычислить его стороны
Составить блок-схему и программу вычисления сторон правильного треугольника...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru