public void CancelRequest(ProjectReferrencer pr)
 {
     lock (WaitingUsers)
     {
         pr.IsResSynchronizing = false;
         foreach (var id in pr.UserIDs)
         {
             var suser = Program.UserMgr.GetLoginUserInfo(id);
             WaitingUsers.Remove(suser);
         }
     }
 }
        public bool PushRequest(ProjectReferrencer pr)
        {
            bool succeeded = false;

            lock (WaitingUsers)
            {
                foreach (var id in pr.UserIDs)
                {
                    var suser = Program.UserMgr.GetLoginUserInfo(id);
                    if (suser.LoginInfo.MissingResourceFiles.Length > 0)
                    {
                        WaitingUsers.Add(suser);
                        succeeded = true;
                    }
                }
                pr.IsResSynchronizing = true;
            }
            return(succeeded);
        }
 public void Tick()
 {
     for (int i = 0; WaitingUsers.Count > 0 && i < LoadingUserSlots.Length; ++i)
     {
         if (LoadingUserSlots[i] == null)
         {
             ServerLoginUserInfo user = null;
             lock (WaitingUsers)
             {
                 user = WaitingUsers[0];
                 WaitingUsers.RemoveAt(0);
             }
             if (user.Status < LoginStatus.在线)
             {
                 --i;
             }
             else
             {
                 TransRequestService.QueryTransmission(user.LinkEndPoint.Address, user.LoginInfo.TransServicePort, TransFileKind.ResourceFile, user.LoginInfo.MissingResourceFiles);
                 LoadingUserSlots[i] = user;
             }
         }
     }
 }