Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 13:23   #1
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию как получать событием данные через named pipe?

Добрый день всем.
Есть некоторые вопросы по named pipe, а именно:

1. Насколько стабильно соединение сервер-клиент при данном варианте межпроцессных коммуникаций? Если недостаточно стабильно, то какой вид межпроцессных коммуникаций является более стабильным с сохранением максимального быстродействия?

2. На стороне клиента проверяю пришедшее сообщение таймером. Может ли кто-нибудь подсказать, как это получать не в таймере, а событием?

код сервера:
Код:
public void StartServer()
        {
            _pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.Out, 1);

            ToFilesLog("Pipe created " + Convert.ToString(_pipeServer.GetHashCode()));

            _pipeServer.WaitForConnection();
            ToFilesLog("Pipe connection established");

            _swrite = new StreamWriter(_pipeServer);
            _swrite.AutoFlush = true;
        }

// отправка сообщения по клику
private void Button_update_Click(object sender, RoutedEventArgs e)
        {
            _sendmessage = _sendmessage + "1";
            TextBox1.Text = _sendmessage;
            ToFilesLog(_sendmessage);

            try
            {
                _swrite.WriteLine(_sendmessage);
            }
            catch (Exception ex) { throw ex; }
        }
код клиента в другом приложении
Код:
public void StartClient()
        {
            _pipeClient = new NamedPipeClientStream(".", "testpipe", PipeDirection.In, PipeOptions.None);

            if (_pipeClient.IsConnected != true) 
            { 
                _pipeClient.Connect();
                ToFilesLog("_pipeClient created " + Convert.ToString(_pipeClient.GetHashCode()));
            }

            _sread = new StreamReader(_pipeClient);
        }

// получение сообщения в таймере
private void TimerEventProcessorFast(Object myObject, EventArgs myEventArgs)
        {
            if (_fl_fast == false) return;
            _fl_fast = false;

            try
            {
                var temp = _sread.ReadLine();
                TextBox2.Text = temp;
                ToFilesLog(temp);
            }
            catch (Exception ex) { throw ex; }

            if (_pipeClient.IsConnected != true) { AllStop(); return; }

            _fl_fast = true;
        }
gramp вне форума Ответить с цитированием
Старый 10.12.2012, 13:31   #2
stalsoft
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 147
По умолчанию

не хочу показаться "странным", но пайпы ж только на 2000 виндовозках работают, зачем их сейчас юзать?
У женщин чары образуются из стрингов;
А у программистов наоборот - стринги образуются из чаров;
stalsoft вне форума Ответить с цитированием
Старый 10.12.2012, 13:37   #3
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

Почему же только на 2000? Сейчас и на 2012 серваке работает внутри .net 4.5.
Да и даже самая свежая технология WCF от майкрософта для межпроцессного обмена содержит в себе использование пайпов, помимо остального.
gramp вне форума Ответить с цитированием
Старый 10.12.2012, 13:47   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Тип биндинга к сервису wcf у вас какой?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 10.12.2012, 14:02   #5
gramp
Пользователь
 
Регистрация: 26.12.2010
Сообщений: 85
По умолчанию

Так как шаблон wcf в экспресс студии отсутствует, я не делал сервис wcf. Собственно, поэтому для начала решил разобраться, как работают именно named pipe в том виде, как они были до появления wcf.
gramp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правельно работать с событием в потоке через форму bulldog5293 Общие вопросы Delphi 13 16.08.2011 08:48
Потеря данных при записи в Named Pipe (именованный канал) zvukoper Win Api 0 27.02.2011 20:02
использование named Pipe Sparky Общие вопросы .NET 1 29.03.2010 17:54
Как быстро получать данные со звуковой карты. luckydevil Мультимедиа в Delphi 6 03.02.2010 16:21
Как получать данные из чертежа CAD системы Компас V7? Stilet Общие вопросы Delphi 0 28.01.2009 16:11