Пример #1
0
        protected string Logout(bool force = false)
        {
            lock (UserInfo)
            {
                if (!force && UserInfo.Status != UserStatus.LoggedIn)
                {
                    return(UserInfo.Status == UserStatus.Pending ? "操作进行中, 请稍候" : null);
                }
                UserInfo.Status = UserStatus.Pending;
                PushUserInfo();
            }
            try
            {
                lock (UserInfo)
                {
                    Natfrp.Token    = "";
                    UserInfo.Status = UserStatus.NoLogin;
                }
                Save();

                TunnelManager.Stop();
                NodeManager.Stop();
                RemoteManager.Stop(true);
            }
            catch (Exception e)
            {
                return("未知错误:\n" + e.ToString());
            }
            finally
            {
                PushUserInfo();
                TunnelManager.Push();
            }
            if (!force)
            {
                LogManager.Log(1, "Service", "已退出登录");
            }
            return(null);
        }