コード例 #1
0
ファイル: StreamSock.cs プロジェクト: cloudlion/NewStar
        private void Recv()
        {
            Logger.Log("sock recv thread start...");
            while (!close && !interrupted)
            {
                try
                {
                    long interval = DateTime.Now.Ticks;

                    if (sock == null)
                    {
                        Logger.LogWarning("sock is null by not close");
                        break;
                    }
                    else if (!Connected)
                    {
                        Logger.LogWarning("sock disconnected by not close");
                        break;
                    }
                    else
                    {
                        OnRecv();
                    }

                    interval = System.DateTime.Now.Ticks - interval;
                    int sleep = 10 - (int)SysUtil.TickToMilliSec(interval);
                    if (sleep > 0)
                    {
                        Thread.Sleep(sleep);
                    }
                }
                catch (System.Exception ex)
                {
                    if (!(ex is System.Threading.ThreadAbortException))
                    {
                        Logger.LogError(ex);
                    }
                    else
                    {
                        Logger.Log("recv thread abort");
                    }
                    interrupted = true;
                }
            }
            interrupted = true;
            Logger.Log("sock recv thread end normally");
        }