public void Dispose()
        {
            if (_disposed)
            {
                return;
            }
            ObjectStateNotifier.RemoveObserver(this);

            try
            {
                var i = Marshal.ReleaseComObject(_exchangeClient);
                Thread.Sleep(10);
                while (i > 0)
                {
                    LogManager.WriteLog("Number of objects in _exchangeClient = " + i, LogManager.enumLogLevel.Info);
                    i = Marshal.ReleaseComObject(_exchangeClient);
                }
                LogManager.WriteLog("|=> _exchangeClient was released successfully.", LogManager.enumLogLevel.Info);

                i = Marshal.ReleaseComObject(_iExchangeAdmin);
                Thread.Sleep(10);
                while (i > 0)
                {
                    LogManager.WriteLog("Number of objects in _iExchangeAdmin = " + i, LogManager.enumLogLevel.Info);
                    i = Marshal.ReleaseComObject(_iExchangeAdmin);
                }
                LogManager.WriteLog("|=> _iExchangeAdmin was released successfully.", LogManager.enumLogLevel.Info);
            }
            catch
            { }

            _iExchangeAdmin = null;
            _exchangeClient = null;
            GC.SuppressFinalize(this);
        }
Пример #2
0
        public EmployeeMasterCard()
        {
            _exchangeClient = new ExchangeClient();
            _exchangeClient.EMP_DATA_ACK += new _IExchangeClientEvents_EMP_DATA_ACKEventHandler(_exchangeClient_EMP_DATA_ACK);
            _exchangeClient.InitialiseExchange(0);

            if (_requestCollection == null)
            {
                _requestCollection = new SortedDictionary <int, EmployeeMasterCardThreadData>();
            }

            if (_emppollingCollection == null)
            {
                _emppollingCollection = new List <Employeecarddata>();
            }


            _thRequest = new Thread(new ThreadStart(ProcessRequest));
            _thRequest.Start();


            _thAckResponse = new ThreadDispatcher <EmployeeMasterCardThreadDataResponse>(1, "_thAckResponse_EmployeeMasterCard");
            _thAckResponse.AddProcessThreadData(new ProcessThreadDataHandler <EmployeeMasterCardThreadDataResponse>(this.ProcessResponse));
            _thAckResponse.Initialize();

            _iExchangeAdmin = (IExchangeAdmin)_exchangeClient;
            ObjectStateNotifier.AddObserver(this);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ThreadDispatcher"/> class.
 /// </summary>
 /// <param name="threadCount">The thread count.</param>
 public ThreadDispatcher(int threadCount, string helperName)
 {
     ObjectStateNotifier.AddObserver(this);
     _threadCount      = (threadCount < 0 ? 1 : threadCount);
     _threadContainers = new SortedDictionary <int, ThreadContainer>();
     _threadIndexes    = new SortedDictionary <string, int>(StringComparer.InvariantCultureIgnoreCase);
     _rnd           = new Random(_threadCount - 1);
     _evtInitialize = new ManualResetEvent(false);
     _closeHandles  = new WaitHandle[0];
     _helperName    = helperName;
     this.InitSettings();
     LogManager.WriteLog("|=> ThreadDispatcher created.", LogManager.enumLogLevel.Info);
 }
 /// <summary>
 /// Releases unmanaged and - optionally - managed resources
 /// </summary>
 /// <param name="disposing"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
 private void Dispose(bool disposing)
 {
     if (!disposed)
     {
         if (disposing)
         {
             ObjectStateNotifier.RemoveObserver(this);
             _threadIndexes.Clear();
             _threadContainers.Clear();
             LogManager.WriteLog("|=> ThreadDispatcher disposed.", LogManager.enumLogLevel.Info);
         }
         disposed = true;
     }
 }
        public RleaseGameCap()
        {
            _exchangeClient              = new ExchangeClient();
            _exchangeClient.MACEnDisAck += new _IExchangeClientEvents_MACEnDisAckEventHandler(_exchangeClient_MacEnable_DATA_ACK);
            _exchangeClient.InitialiseExchange(0);

            if (_requestCollection == null)
            {
                _requestCollection = new SortedDictionary <int, EnableMachineThreadData>();
            }

            if (m_SectorData == null)
            {
                m_SectorData = new Sector203Data();
            }

            if (oGameCappingBiz == null)
            {
                oGameCappingBiz = new GameCappingBiz();
            }

            if (_lstGameCapDetails == null)
            {
                _lstGameCapDetails = new List <GameCapDetails>();
            }

            _thRequest = new Thread(new ThreadStart(ProcessRequest));

            _thAckResponse = new ThreadDispatcher <EnableMachineThreadDataResponse>(1, "_thAckResponse_EnableMachine");
            _thAckResponse.AddProcessThreadData(new ProcessThreadDataHandler <EnableMachineThreadDataResponse>(this.ProcessResponse));
            _thAckResponse.Initialize();

            _iExchangeAdmin = (IExchangeAdmin)_exchangeClient;
            ObjectStateNotifier.AddObserver(this);

            _thRequest.Start();
        }