示例#1
0
        public async Task <IEnumerable <ConnectionInfoBase> > EnumerateAllConnectionInfos()
        {
            var connections1 = await RDPConnectionInfos.ToListAsync();

            var connections2 = await SSHConnectionInfos.ToListAsync();

            return(connections1
                   .Cast <ConnectionInfoBase>()
                   .Union(connections2));
        }
示例#2
0
        private void InitConnectionInvokeTimer()
        {
            ConnectionInvokeTimer.Interval = TimeSpan.FromMilliseconds(500);
            ConnectionInvokeTimer.Tick    += async(s, e) =>
            {
                var list = new List <(ConnectionType Type, int Id)>();
                while (ConnectionRequest.Singleton.Queue.Count > 0)
                {
                    list.Add(ConnectionRequest.Singleton.Queue.Dequeue());
                }
                foreach (var(type, id) in list)
                {
                    try
                    {
                        switch (type)
                        {
                        case ConnectionType.SSH:
                            await SSHConnectionInfos.ConnectById(id);

                            break;

                        case ConnectionType.RDP:
                            await RDPConnectionInfos.ConnectById(id);

                            break;

                        default:
                            break;
                        }
                    }
                    catch (KeyNotFoundException ex)
                    {
                        MyLogger.Log($"ID {id} is not found in {type} connections.", ex);
                    }
                }
            };
            ConnectionInvokeTimer.Start();
        }