Ejemplo n.º 1
0
        private async void DevicePoller_DeviceDisconnected(object sender, DeviceEventArgs e)
        {
            try
            {
                await _Lock.WaitAsync();

                var LedgerManager = LedgerManagers.FirstOrDefault(t =>
                {
                    var ledgerManagerTransport = t.RequestHandler as LedgerManagerTransport;
                    return(ReferenceEquals(ledgerManagerTransport?.LedgerHidDevice, e.Device));
                });

                if (LedgerManager != null)
                {
                    LedgerDisconnected?.Invoke(this, new LedgerManagerConnectionEventArgs(LedgerManager));

                    LedgerManager.Dispose();

                    var tempList = new List <IManagesLedger>(LedgerManagers);

                    tempList.Remove(LedgerManager);

                    LedgerManagers = new ReadOnlyCollection <IManagesLedger>(tempList);
                }
            }
            finally
            {
                _Lock.Release();
            }
        }
Ejemplo n.º 2
0
        private async void DevicePoller_DeviceInitialized(object sender, DeviceEventArgs e)
        {
            try
            {
                await _Lock.WaitAsync();

                var LedgerManager = LedgerManagers.FirstOrDefault(t => ReferenceEquals(t.LedgerHidDevice, e.Device));
                if (LedgerManager == null)
                {
                    LedgerManager = new LedgerManager(e.Device, CoinUtility, ErrorPromptDelegate);

                    var tempList = new List <LedgerManager>(LedgerManagers)
                    {
                        LedgerManager
                    };

                    LedgerManagers = new ReadOnlyCollection <LedgerManager>(tempList);

                    if (_FirstLedgerTaskCompletionSource.Task.Status == TaskStatus.WaitingForActivation)
                    {
                        _FirstLedgerTaskCompletionSource.SetResult(LedgerManager);
                    }

                    LedgerInitialized?.Invoke(this, new LedgerManagerConnectionEventArgs(LedgerManager));
                }
            }
            finally
            {
                _Lock.Release();
            }
        }