Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# .NET

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
andryshka69
3 / 3 / 0
Регистрация: 26.11.2013
Сообщений: 129
#1

Взаимодействие между двумя приложениями - C#

19.06.2015, 01:10. Просмотров 2867. Ответов 62
Метки нет (Все метки)

Я читал возможные варианты и из того, что нашел, если верно понял не подходит ничего (отрицать не буду, еще не отоспался после сданного диплома и могу быть не внимателен, прошу простить)



имею 2 приложения, ссылки будут ниже
идея: имеется 2 приложения одно главное с действиями и второе только просмотр.
в первом приложении(DF Admin) выбираю определенный чекбокс и в приложении втором (DF User)
меняется цвет лейбла.

как быть? использовать файл, если да, то какой чтобы не тормозило или исправно работало, ведь копий обоих программ в итоге будет открыто несколько.. наплодить текстовых файлов с единицами/нулями и в втором приложении наставить везде бесконечных циклов для чтения? а насколько это будет верно?

есть ли какой-либо способ чтобы нажать например чекбокс приложения 1 (DF Admin) автоматически во всех открытых копиях программы 1 ставился этот чекбокс и конечно же во всех открытых копиях программы 2(DF User) менялся цвет.


программы:
Кликните здесь для просмотра всего текста
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2015, 01:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Взаимодействие между двумя приложениями (C#):

Взаимодействие между двумя .NET приложениями - C#
Всем доброго дня! Подскажите, что и как лучше использовать для передачи данных между двумя .NET приложениями. Мне необходимо с...

Общение между двумя приложениями - C#
В процессе разработки приложения wpf я окончательно убедился что моя программа не совместима с wpf всего по одной причине , не достаточно...

.NET 3.x Сериализация между приложениями - C#
В MS VS 2010 создал решение и в нём 2 проекта: Client и Server. В каждом расположил класс Package.cs. Внутри каждого проекта сериализация /...

Обмен данных между приложениями - C#
Добрый день! Такая задача, клиент базы данных Oracle стоить 32 битный, а приложение которое должно получать данные из БД 64 битное....

Передача объектов между приложениями - C#
Есть ли способ напрямую передать объекты из одного .NET приложения в другое? Объём достаточно большой, поэтому сериализация-десериализация...

Универсальный обмен данными между приложениями - C#
Посоветуйте, пожалуйста, подход для решения следующей штуки: Передача данных из приложенияА (C#) в приложениеB (C#, C++, Java, остальные...

62
aquaMakc
372 / 316 / 47
Регистрация: 14.02.2014
Сообщений: 1,626
Завершенные тесты: 1
24.06.2015, 10:01 #16

Не по теме:

Последний раз в теме скажу, что мне очень не нравится идея использования внешнего файла в качестве информационного буфера между приложениями. Геморроя от этого решения огребёшь неслабо.



Что-то ты не правильно делаешь. Как организуешь поток? Как передаёшь в него данные? Как думаешь из потока управлять формой?
0
andryshka69
3 / 3 / 0
Регистрация: 26.11.2013
Сообщений: 129
24.06.2015, 12:57  [ТС] #17
у меня локальная сеть. ip для сервера мне не где взять.

будет 2-3 человека использовать admin
и человек 20 user.

мне по локалке никак и не сделать..
с потоками я запутался и попросил помощи тут
0
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 13:14 #18
andryshka69, Попробуй WCF и netTcpBinding
0
aquaMakc
372 / 316 / 47
Регистрация: 14.02.2014
Сообщений: 1,626
Завершенные тесты: 1
24.06.2015, 13:48 #19
andryshka69, если у тебя ПК в локалке, то IP них есть, я тебе гарантирую )))), если сеть небольшая, скорее всего DHCP не используется, а IP присваиваются руками, следовательно они не меняются. Сервер запускается на одной машине и IP известен - проблемы нет.
Если же и сервер и клиент крутится на одном ПК, то можно использовать вариант для ленивых. ip 127.0.0.1.

Casper-SC, Какой wcf? Пусть сначала с элементарными вещами разберётся. Ему сейчас как минимум разбираться с многопоточностью, делегатами, событиями, обработчиками исключений. Если продолжит копать файловый буфер - потоки чтения и записи, преобразование байтовых массивов, работа со строками (по хорошему XML и JSON). Если сокеты - синхронные и асинхронные методы, опять же байтовые массивы.
Привязки, интерфейсы и их реализация это ему сейчас не подъёмно. Только запутает ещё больше.
0
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 13:51 #20
Цитата Сообщение от aquaMakc Посмотреть сообщение
Casper-SC, Какой wcf? Пусть сначала с элементарными вещами разберётся.
С какими?

Я не в курсе его уровня.
0
aquaMakc
372 / 316 / 47
Регистрация: 14.02.2014
Сообщений: 1,626
Завершенные тесты: 1
24.06.2015, 13:55 #21
Casper-SC, он в теме давал ссылку на свой код. Я посмотрел. До WCF ему ещё далеко.
1
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 14:04 #22
aquaMakc, скачал, посмотрел, слишком мало кода, чтобы делать выводы, единственно "режет глаз" портянка из обработчиков, в которых меняется только номер. Ну хоть номер этот передаётся в метод, а не дублируется код )

Добавлено через 2 минуты
И вообще, для начала надо бы оба проекта запихать в одно решение. А то напрягает между студиями переключаться, да и наверняка у них будут общие библиотеки, всё это поддерживать проще в одном решении.
1
aquaMakc
24.06.2015, 14:05
  #23

Не по теме:

Casper-SC, в принципе достаточно и такого небольшого куска, чтобы примерно оценить уровень. В этом нет ничего страшного, все начинали с азов. Главное - не бросать и не прыгать через ступени - толку никакого, только потеряное время.

0
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 14:08 #24
aquaMakc, я не пойму, в итоге-то, что ему делать? На сокетах?
1
andryshka69
3 / 3 / 0
Регистрация: 26.11.2013
Сообщений: 129
24.06.2015, 14:08  [ТС] #25
вы можете исправить чтобы работали циклы бесконечные или таймеры (с ними у меня поладить тоже не удалось)
чтобы криво - но работало через файлы. мне нужно сейчас хоть что-то отдать и я уже разбираю wcp
0
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 14:14 #26
andryshka69, какие циклы? Ты о чём вообще?

Добавлено через 13 секунд
В проектах ничего такого не вижу.
1
andryshka69
3 / 3 / 0
Регистрация: 26.11.2013
Сообщений: 129
24.06.2015, 14:15  [ТС] #27
если их добавлю сам - то они работать не будут.. все виснет

ставлю метод в form_load
в нем бесконечный цикл и все висит - форма даже не открывается..
ставлю в form_shown ничего не происходит
0
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 14:17 #28
Цитата Сообщение от andryshka69 Посмотреть сообщение
в нем бесконечный цикл и все висит - форма даже не открывается..
А что циклы делают?

Добавлено через 50 секунд
Если это проект не тестовый, не для самообучения, а будет использоваться в работе, рекомендую сразу нормально делать, а не с всякими файлами экспериментировать.

Добавлено через 43 секунды
Так же, к примеру, ты не умеешь использовать таймер. Создавай проект, там пробуй, когда всё норм, сохраняй. Потом как забылось, открыл, глянул. Я так делал, когда учил.
1
aquaMakc
372 / 316 / 47
Регистрация: 14.02.2014
Сообщений: 1,626
Завершенные тесты: 1
24.06.2015, 14:19 #29
Casper-SC, да, я предлагаю на сокетах. Это намного проще. По крайней мере было для меня. Если использовать асинхронные методы - то даже не надо на потоках заморачиваться.

andryshka69, ты сначала для самого себя представь архитектуру программы. Как она должна работать. И не так - сервер, клиент, между ними файл. Подробно - как как работает сервер, что, как и когда он должен писать в файл. Где этот файл должен располагаться. Что должен делать клиент, как читать файл, что должно происходить при чтении. В конце концов, даже в учебных заведениях сначала учат блок-схемы рисовать.

Пока этого нет я твои посты читаю "сделайте мне хорошо".
2
Casper-SC
Эксперт .NET
3521 / 1740 / 183
Регистрация: 27.03.2010
Сообщений: 4,927
Записей в блоге: 1
24.06.2015, 14:26 #30
Цитата Сообщение от aquaMakc Посмотреть сообщение
Если использовать асинхронные методы - то даже не надо на потоках заморачиваться.
DataManager.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
        /// <summary>
        /// Отправить заявку оператору
        /// </summary>
        /// <param name="appNumber"></param>
        public bool SendApplicationToOperator(int appNumber)
        {
            try
            {
                var res = _dataService.SendApplicationToOperator(Constants.LineNumber, appNumber);
                if (!string.IsNullOrEmpty(res.Error) || res.Result != DbOperationResult.Success)
                {
                    string text = string.Format("_dataService.SendApplicationToOperator(){0}{1}", Environment.NewLine, res.Error);
                    LogManager.Logger.AppendText(text);
                }
 
                return res.Result == DbOperationResult.Success;
            }
            catch (Exception ex)
            {
                HandleException(ex);
            }
 
            return false;
        }
MainViewModel.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public RelayCommand<ApplicationViewModel> SendSelectedAppCommand
        {
            get
            {
                return _sendSelectedAppCommand ?? (_sendSelectedAppCommand = new RelayCommand<ApplicationViewModel>(
                    (app) =>
                    {
                        Task.Factory.StartNew(() =>
                        {
                            DataManager.Instance.SendApplicationToOperator(app.Id);
                        });
                    }));
            }
        }
Вот посмотри, тут я где-то парюсь, что сложно работать с потоками?

Где _dataService - это WCF канал с netTcpBinding

Добавлено через 2 минуты
Не знаю, в общем, как по мне, так в WCF проще.

Добавлено через 2 минуты
Или ещё лучше (async await):
DataManager.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        /// <summary>
        /// Получить список авторизованных пользователей
        /// </summary>
        /// <returns></returns>
        public Task<UserInfo[]> GetAuthorizedUserInfosAsync()
        {
            return Task<UserInfo[]>.Factory.StartNew(() =>
            {
                try
                {
                    return _dataService.GetAuthorizedUserInfos();
                }
                catch (Exception ex)
                {
                    HandleException(ex);
                    return null;
                }
            });
        }
UserAdminVm.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public async void ReloadData()
        {
            if (!DataManager.Instance.CheckConnection())
            {
                return;
            }
 
            IsBusy = true;
            UserInfo[] infos = await DataManager.Instance.GetAuthorizedUserInfosAsync();
            if (infos != null) 
            {
                FillCollection(infos);
            }
            IsBusy = false;
        }
 
        private void FillCollection(UserInfo[] infos)
        {
            UserInfos = new ObservableCollection<UserInfoVm>(infos.Select(inf => new UserInfoVm(inf)));
        }
1
24.06.2015, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2015, 14:26
Привет! Вот еще темы с ответами:

Как организовать обмен данными между приложениями по интернету - C#
Здравствуйте! Подскажите пожалуйста, каким образом можно организовать обмен данными между приложениями по интернету? Какие методы...

Передача данных между приложениями без сохранения буферного файла - C#
Здравствуйте! Я создаю на C# библиотеку, которая реализует интеграцию 2 приложений - КОМПАС 3D и Internet Explorer. Данные проекта...

Взаимодействие между потоками - C#
Привет. Есть класс А, который содержит не статические методы, которые можно вызвать лишь с главного потока. И есть класс Б, который...

Взаимодействие с приложениями - .NET
Здравствуйте. Хочу сделать программу, которая будет взаимодействовать с разными приложениями. К примеру, уже нашёл, как взаимодействовать...


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

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

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