|
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
|
||||||
Простой способ взаимодействия потоков06.07.2022, 09:39. Показов 754. Ответов 5
Всем добрый день!
Я относительно недавно, начал разбираться в многопоточности, асинхронности, параллелизме и прочей Галопом пробежал по основным возможностям, это типа: async await, backgroundworker, thread, task. И вот что. Все материалы в интернете в основном посвящены безопасности потоков, как их создавать, как их оптимизировать, как ими управлять.. и т.п. Даже знаменитый сайте met$nit (не знаю можно ли его тут указывать), не даёт информации о том, как осуществить простое взаимодействие между двумя потоками? Из этого и следует вопрос: Как осуществить простое взаимодействие между двумя потоками?(а может верней было бы поставить вопрос, так: какой самый быстрый путь, для обмена данными между двумя потоками). Под взаимодействием я имею в виду, передачу каких либо данных, между двумя потоками. Я слышал, что можно через делегат... И вот решил всё это, протестить и зашёл в тупик. Создал простое консольное приложение и добавил на него форму (UserForms). Принцип работы такой: консоль постоянно ждёт ввода от пользователя (кроме клавиши Escape, это выход из консоли), а всё что вводит пользователь в консоль я бы хотел менять на значение у "Label1" на UserForm'е. Это я всё описал, чтобы как можно меньше ушло времени на чтение кода. И сам код:
Всё сделанное здесь, исключительно в образовательных целях. Или вернее цели. Понять, как пробросить данные между потоками. Интересует, самый простой способ. Или может правильней было бы написать, самый быстрый способ. В общем, то что можно было бы понять новичку. А потом уже пускаться в пляс и дебри. Вот как связать эти потоки? Как изменить label, при вводе пользователем текста в консоли.
0
|
||||||
| 06.07.2022, 09:39 | |
|
Ответы с готовыми решениями:
5
Простой способ удаленного вызова метода Подскажите простой способ собрать OpenVPN |
|
Модератор
|
|
| 06.07.2022, 09:53 | |
Сообщение было отмечено Schumacher57 как решение
Решение
Schumacher57, передачи данных между потоками не бывает.
В потоке исполнятся метод и вмешаться в его работу невозможно. Можно создать какой-то общий объект для разных методов. И методы будут изменять/проверят его состояние. Конкретно в вашем случае, проблема вовсе в другом. Некоторые типы для обеспечения потокобезопасности позволяют работать с ними только в одном потоке. Все методы которые работают с этим объектом вызываются по очереди и тем самым не конфликтуют друг с другом. Для UI элементов Форм и WPF - это основной поток приложения (тот в котором оно открывается). Для изменения UI элементов из других потоков надо сначала перейти в UI поток - то есть поставить в очередь этого потока метод который должен выполниться. Для Форм см. 3. Как получить доступ к контролу из другого потока
1
|
|
|
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
|
|||
| 06.07.2022, 10:05 [ТС] | |||
|
И да:
0
|
|||
|
Модератор
|
|
| 06.07.2022, 10:43 | |
|
Schumacher57, вам нужно немного глубже понять ООП.
В нём всё состоит из объектов и их членов. Данные получать, отправлять могут только объекты. А поток это только очередь инструкций для совершения этих действий.
1
|
|
|
18 / 17 / 3
Регистрация: 07.09.2015
Сообщений: 301
|
|
| 06.07.2022, 10:55 [ТС] | |
|
Uswer, Элд Хасп,
Спасибо, больше за ответы! ![]() Я выяснил, что хотел ![]() ![]()
0
|
|
| 06.07.2022, 10:55 | |
|
Помогаю со студенческими работами здесь
6
Простой способ получения строки/столбца двумерного массива Зашифровать, перевернуть самый простой способ скрыть из исходника строку Есть ли более простой и оптимальный способ решения данной задачи? Найти самый простой способ решения этой задачи с пояснением Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|