public void InvokeClientOnActiveDesktopSession(Action<IWcfClientSide> asyncResult)
        {
            var timeoutTime = DateTime.Now + TimeSpan.FromSeconds(10);
            var desktopSessionId = DesktopSessionHelper.GetActiveSessionId();

            var removes = new List<ClientInfo>();
            foreach (var item in _clients)
            {
                if (item.DesktopSessionId == desktopSessionId)
                {
                    if (Invoke(asyncResult, item))
                        return;
                    removes.Add(item);
                }
            }
            foreach (var item in removes)
                _clients.Remove(item);

            // connected client not found, so launch new client
            RegisterListener rl = new RegisterListener
            {
                DesktopSessionId = desktopSessionId,
                AsyncResult = asyncResult,
                TimeoutTime = timeoutTime,
            };
            lock (_registerListeners)
            {
                _registerListeners.Add(rl);
            }
            var path = CWService.GetProgramFileInfo().FullName;
            DesktopSessionHelper.LaunchInActiveSession(path);
        }
Beispiel #2
0
        void RegisterListenerWork()
        {
            RegisterListener listenRegister = RegisterListener.Instance;

            listenRegister.Listener();
        }