public void RemoveWallet(Guid id, Action <ResponseBase> callback)
 {
     Task.Factory.StartNew(() => {
         Guid messageId = Guid.NewGuid();
         try {
             RemoveWalletRequest request = new RemoveWalletRequest {
                 MessageId = messageId,
                 LoginName = LoginName,
                 Timestamp = DateTime.Now,
                 WalletId  = id
             };
             request.SignIt(Password);
             using (var service = CreateService()) {
                 ResponseBase response = service.RemoveWallet(request);
                 callback?.Invoke(response);
             }
         }
         catch (CommunicationException e) {
             Global.DebugLine(e.Message, ConsoleColor.Red);
             callback?.Invoke(ResponseBase.ClientError(messageId, e.Message));
         }
         catch (Exception e) {
             Global.Logger.Error(e.Message, e);
             callback?.Invoke(ResponseBase.ClientError(messageId, e.Message));
         }
     });
 }
 public ResponseBase RemoveWallet(RemoveWalletRequest request)
 {
     if (request == null)
     {
         return(LoadClientResponse.InvalidInput(Guid.Empty, "参数错误"));
     }
     try {
         if (string.IsNullOrEmpty(request.LoginName))
         {
             return(ResponseBase.InvalidInput(request.MessageId, "登录名不能为空"));
         }
         if (!HostRoot.Current.UserSet.TryGetKey(request.LoginName, out IUser key))
         {
             return(ResponseBase.Forbidden(request.MessageId));
         }
         if (!request.Timestamp.IsInTime())
         {
             return(ResponseBase.Expired(request.MessageId));
         }
         if (request.WalletId == Guid.Empty)
         {
             return(ResponseBase.InvalidInput(request.MessageId, "WalletId为空"));
         }
         if (request.Sign != request.GetSign(key.Password))
         {
             return(ResponseBase.Forbidden(request.MessageId, "签名验证未通过"));
         }
         HostRoot.Current.WalletSet.Remove(request.WalletId);
         return(ResponseBase.Ok(request.MessageId));
     }
     catch (Exception e) {
         Global.Logger.ErrorDebugLine(e.Message, e);
         return(ResponseBase.ServerError(request.MessageId, e.Message));
     }
 }