|
1 / 1 / 0
Регистрация: 02.10.2012
Сообщений: 110
|
|
Передача между процессами, разделяемая память?03.04.2023, 10:45. Показов 3859. Ответов 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 между процессами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|
|
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные.
. . .
|
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Написать программу вычисления стоимости некоторого количества (по весу) яблок.
Решение:
Создан документ, с табличной частью. . .
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|