|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|
Передача между процессами, разделяемая память?03.04.2023, 10:45. Показов 3962. Ответов 35
Хотел реализовать передачу данных между процессами (приложениями) - выбрал через разделяемую память - мне показалось самое простое (например https://metanit.com/sharp/articles/4.php). У меня форма (windowsForm) запускается из консольного приложения:
если на уровне консоли (консоль-консоль) - все работает, если консоль - форма - разделяемая память не читается, как будто ее нет. В чем проблема? Как передать информацию от консоли к форме (разные процессы), возможно через разделяемую память? Добавлено через 1 час 46 минут проверил между формами тоже работает, п.с проблема консоль-форма
0
|
|
| 03.04.2023, 10:45 | |
|
Ответы с готовыми решениями:
35
Windows API и передача сообщений между процессами посредством SEND_MESSAGE Передача классов между процессами через WCF WS,WCF,WPF и передача данных между разными процессами (удалёнными\локальными) |
|
|
|||||||||||||
| 04.04.2023, 02:56 | |||||||||||||
|
Если уже оооочень хочется чтобы в файле лежало не более одного сообщения, то тогда используют 2 read-write блокиратора. Общий подход такой
0
|
|||||||||||||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
||
| 13.04.2023, 14:42 [ТС] | ||
|
нет мы не прикалываемся, вы просто рекламируете семафоры (про то что я поблагодарил - имел введу, что мне их просто надо повторить) 1) Мьютекса как я и думал (так и IamRain написал), вполне достаточно!: ConsoleApp1.zip -проверка добавил в блок записи - уснуть на 600сек, все второй запуск ждет.... 2) Твой пример, у тебя таже ошибка, что ты сам и писал = у тебя возможно чтение 0, или непонятно чего... твои семафоры записи, блокирует поток записи при этом не блокирует чтение: т.е допустим файл большой или ядро загружено и твой поток начинает тормозить, а в это время заходит поток чтения и начинает читаеть еще недописанный файл! - хотя скорее всего система просто збаит, выкинет исключение или не даст прочитать этот файл. => т.е ты сам совершил ту ошибку, которую так описвал.. 3) насчет Pipes, спасибо- их вроде не встречал, в отличии от мьютексов/семафоров. За Pipes - еще раз спасибо.
0
|
||
|
|
|||||||||
| 13.04.2023, 16:51 | |||||||||
|
2. Второй поток не зайдет на "чтение/запись", так как первый выставляет блок. И наоборот. Т.е. одномоментно идет либо запись, либо чтение. 3. Два элемента для блокировки, чтобы нельзя было следующее - записали - опять записали, перетерев преведущее - считали writeLocker будет заблокирован до тех пор, пока не отработает чтение и наоборот вот вам минимальный пример для проверки что такой подход работает
0
|
|||||||||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|||||||
| 13.04.2023, 19:34 [ТС] | |||||||
|
2) по мне ты нагородил как раз костыль: а)
б) тут неименованые светафоры и пример, только для своего потока для конкретного примера оно нормально (для одного приложения). а если запустить паралельную программу локальные переменные будут свои... ______________________ Ладно не буду спорить, все равно спасибо...
0
|
|||||||
|
|
||||||||||||||||||
| 13.04.2023, 21:10 | ||||||||||||||||||
Пишущее приложение
0
|
||||||||||||||||||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|||||||||||||||||
| 14.04.2023, 08:33 [ТС] | |||||||||||||||||
|
1) ты по умолчанию блокируешь семафор
Файл на диске существует, я его хочу считать, тебе семафор не даст его прочитать, если заменить на 1,1 получишь другой результат. А если 0,1 ты его не считаешь пока не запишешь. 2) а) в данном случае можно было заменить на один мьютекс, а не два семафора б) sleep не люишь заменил имитацию долгой работы на чтение клавиши =)) Вот код чтения (модернезированные твои файлы):
все прекрасно работает, причем ты файл можешь считать, не запуская запись и наоборот! (на момент записи/чтение поток блокируется)
0
|
|||||||||||||||||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|
| 14.04.2023, 08:34 [ТС] | |
|
запустили чтение вошел, запись пока недоступна...и наоборот тож прекрасно работает п.с по хорошему мин еще добавить проверку сущ. файла, но это не важно
0
|
|
|
|
|||
| 14.04.2023, 21:12 | |||
|
Скачаный ваш пример при запуски приложений (в солюшене для обоих проэктов выставлен Start) выдает вот это, после нажания enter в Read приложении. Окей, запускаем сначала Write приложение, нажимаем enter, потом запускам Read.... и получаем что читалось только последнее запсаное значение... Разбирать ваш пример нет смысла, он даже в теории не рабочий. У меня пропало желание донести до вас мысль что вы не разобрались синхронизации работы через Mutex и нет понимания "что где и как происходит". Могу пожелать удачи в кодинге, но не удивляйтесь если результат будет печальным.
0
|
|||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
||
| 15.04.2023, 08:08 [ТС] | ||
|
Точно проверял, посмотри у меня адрес файла другой. Причем у тебя точно такая ошибка была, я запустил запись файла небыло ругалось на отсутсвие файла создал просто файла и изменил путь - тогда твое приложение пошло, потом начал изменять. п.с конечно проверил, я скрин кидал (правда когда оно не прочитало) п.с2 1) как и чуть выше написал у меня точно такае ошибка была на твоем приложении, при записи (т.к файл не существовал, поэтому я писал еще раньше, что стоило добавить проверку сущ.файла) 2) посмотри путь у тебя он лежал просто в папке Temp
0
|
||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
||
| 15.04.2023, 08:20 [ТС] | ||
|
А ПРИМЕР РАБОЧИЙ!!! п.с и если просто создать у тебя там записано 1000байт (т.е файл должен быть как в твем примере, если он у тебя есть добавь путь к Temp. (у нас чуть отличается путь, у меня он в корне, у тебя в темпе) п.с2 у меня правда и другая ошибка была: поехал домой(на родину) он не запускался писал нету 7Net,хотя вижуал показвал что он установлен. вторая как и писал файла небыло, даже твоя запись у меня ругалось...
0
|
||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|
| 15.04.2023, 08:26 [ТС] | |
|
0
|
|
|
|
|
| 15.04.2023, 15:21 | |
|
Мда... хоть видео скидывай, раз настолько все запущенно. Хотя после того как вы уперлись в ошибку "Could not find a part of the path", складываетеся что вы как из анекдота: "я не читатель, я писатель!" Пожалуй откланяюсь, потмоу как если на первых ваших скринах вывода "работающего примера" не хватало "Read completed!" и "Write completed!" и это можно было объяснить невнимательностью... то после вывода простыни из wrong и уверености что "все ок" -- не, ну это уже как минимум А+, а у меня только белый пояс.
0
|
|
|
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
|
|
| 15.04.2023, 16:22 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
||
| 15.04.2023, 19:40 [ТС] | ||
|
1- мой модернезированный, 2-твой иходный //ошибка таже, причем при записи, файл по идеи не существует, но не тут было (у тебя добавляется ошибка директории, у мастера с белым поясам, директорию не проверям, что существует) NO COMMENT!!!
0
|
||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
||
| 15.04.2023, 19:40 [ТС] | ||
|
(у него нет проверки директории, а у меня существования файла, поэтому ошибки //но они примерно одинаковые
0
|
||
|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|
| 15.04.2023, 19:50 [ТС] | |
|
мой пример он просто запустил чтение и мьютекс заблокировал запись, поэтому у него запись не работала, а в чтении вывалилась ошибка.
его пример у него если не создать директорию не запись не запустишь (нет проверки директории), не файл не прочитаешь (так как его еще нет) ______ п.с разговор просто был что можно обойтись один мьютексами, а не двумя семаформи а насчет сброса разделяемой памяти я так не понял, пересобрал решение, нормально читало//хотя очень редко скидвала (поставил запись в форме, что она открыта) ______ ладно забыли и проехали все работает, и мой и его пример правда проверки стоило добавить - это так к слову
0
|
|
| 15.04.2023, 19:50 | |
|
Разделяемая память Разделяемая память между двумя процессами Управление процессами, передача данных между процессами
Передача handle между процессами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|