Пример #1
0
        void BuroStoreService_WindowsEventLog(object sender, BuroStoreService.BuroStoreServiceEventArgs e)
        {
            if (e.Type == BuroStoreServiceEventArgs.EventType.Error
                || e.Type == BuroStoreServiceEventArgs.EventType.Warning)
            {
                System.Diagnostics.EventLog log = new System.Diagnostics.EventLog("Бюрократ WMS 2", ".", "Бюрократ WMS 2");

                if (e.Type == BuroStoreServiceEventArgs.EventType.Error)
                {

                    log.WriteEntry(e.Message, System.Diagnostics.EventLogEntryType.Error);

                }
                else if (e.Type == BuroStoreServiceEventArgs.EventType.Warning)
                {
                    log.WriteEntry(e.Message, System.Diagnostics.EventLogEntryType.Warning);

                }

                log.Close();

                log.Dispose();

            }
        }
Пример #2
0
        /// <summary>
        /// обработчик события, раздает событие всем подключенным сессиям telnet
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void BuroStoreService_TelnetLogging(object sender, BuroStoreService.BuroStoreServiceEventArgs e)
        {
            //окна windows показывают в кодировке 866
            //http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0
            byte [] buffer
                = this._encoding866.GetBytes
                (
                    (e.Type != BuroStoreServiceEventArgs.EventType.Info
                        ? e.Type.ToString()
                        : ""
                    )
                    + e.Message
                );

            //сокеты telnet при обращении к которым возникли проблемы
            //нельзя удалять элементы из списка в процессе прохода по нему в цикле foreach
            //поэтому я сперва аккумулирую проблемные сокеты в этом списке
            List<Socket> brokenSockets = new List<Socket>();

            //почему 3000? А почему бы и нет?
            if (_readyToUseTelnetClientsList.WaitOne(3000))
            {
                //публикация в telnet и еще что-нибудь
                foreach (Socket s in this._telnetClients)
                {
                    try
                    {
                        s.Send(buffer);

                        s.Send(this._encoding866.GetBytes("\r\n"));

                    }
                    catch
                    {
                        brokenSockets.Add(s);

                    }

                }

                foreach (Socket s in brokenSockets)
                {
                    this._telnetClients.Remove(s);

                }

                _readyToUseTelnetClientsList.Set();

            }
        }