Example #1
0
    protected virtual void SetWidgetLeave()
    {
        OnLeaveEvent handler = OnWidgetLeave;

        if (handler != null)
        {
            handler(this);
        }
    }
Example #2
0
 /// <summary>
 /// 进入离开状态
 /// </summary>
 public void OnLeave()
 {
     Debug.WriteLine("用户离开了");
     WindowManager.Hide("TipWindow");
     //停止所有服务
     DoStop();
     //启动back timer监听鼠标状态
     back_timer.Start();
     //事件响应
     OnLeaveEvent?.Invoke(this, 0);
 }
Example #3
0
 private void ReceiveEventArgs_Completed(object sender, SocketAsyncEventArgs e)
 {
     if (e.UserToken is ClientStruct client)
     {
         try {
             int len = e.BytesTransferred;
             if (e.SocketError == SocketError.Success && len > 0)
             {
                 if (client.recvData.Capacity < client.recvData.Count + len)
                 {
                     client.recvData.Capacity = client.recvData.Count + len;
                 }
                 for (int i = 0; i < len; i++)
                 {
                     client.recvData.Add(client.recvBuffer[i + e.Offset]);
                 }
                 while (client.recvData.Count >= 8)
                 {
                     int dataLen = client.recvData[0] | (client.recvData[1] << 8) | (client.recvData[2] << 16) | (client.recvData[3] << 24);
                     if (client.recvData.Count - 4 >= dataLen)
                     {
                         int signal = client.recvData[4] | (client.recvData[5] << 8) | (client.recvData[6] << 16) | (client.recvData[7] << 24);
                         OnReceivePackageEvent?.Invoke(client.id, signal, client.recvData.GetRange(8, dataLen - 4).ToArray(), client.userToken);
                         client.recvData.RemoveRange(0, dataLen + 4);
                     }
                     else
                     {
                         break;
                     }
                 }
                 SocketAsyncEventArgs receiveEventArgs = new SocketAsyncEventArgs();
                 receiveEventArgs.Completed += ReceiveEventArgs_Completed;
                 receiveEventArgs.UserToken  = client;
                 receiveEventArgs.SetBuffer(client.recvBuffer, 0, client.recvBuffer.Length);
                 if (!client.s.ReceiveAsync(receiveEventArgs))
                 {
                     ReceiveEventArgs_Completed(sender, receiveEventArgs);
                 }
             }
             else
             {
                 throw new Exception("套接字发生错误!");
             }
         } catch (Exception) {
             lock (socketHashtable) {
                 socketHashtable.Remove(client.id);
             }
             client.s.Close();
             OnLeaveEvent?.Invoke(client.id, client.userToken);
         }
     }
 }
Example #4
0
        /// <summary>
        /// 进入离开状态
        /// </summary>
        public void OnLeave()
        {
            Debug.WriteLine("用户离开了");
            //用户可能是离开电脑了
            leave_timer.Stop();
            //启动back timer监听鼠标状态
            back_timer.Start();
            timer.Stop();
            //事件响应
            OnLeaveEvent?.Invoke(this, 0);

            //停止用眼计时
            useeye_timer.Stop();
        }