private void ThreadRun() { var abData = new Byte[m_nBufferSize]; try { int nReceived = m_theSocket.GetStream().Read(abData, 0, m_nBufferSize); while (nReceived > 0) { m_theCommands.Process(abData); // the Read method will block nReceived = m_theSocket.GetStream().Read(abData, 0, m_nBufferSize); m_lastActiveTime = DateTime.Now; } } catch (SocketException) { } catch (IOException) { } FtpServerMessageHandler.SendMessage(m_nId, "Connection closed"); if (Closed != null) { Closed(this); } m_theSocket.Close(); }
private void ThreadRun() { var abData = new byte[m_nBufferSize]; try { int nReceived = 0; do { var t = m_theSocket.GetStream().ReadAsync(abData, 0, m_nBufferSize); t.Wait(cancelationSource.Token); nReceived = t.Result; lock (lastActiveLock) { m_lastActiveTime = DateTime.UtcNow; } m_theCommands.Process(abData); } while (nReceived > 0); } catch (OperationCanceledException) { } finally { FtpServerMessageHandler.SendMessage(m_nId, "Connection closed"); m_theSocket.CloseSafelly(); } }