Example #1
0
        /// <summary>
        /// Primary worker thread.
        /// </summary>
        /// <param name="socket"></param>
        private void RunWorker(object socket)
        {
            lock (this)
            {
                if (mIsShuttingDown == false)
                {
                    AsyncCallback dataReceivedCallback = ((mReceiveDataInline) && (mUseSynchronousCommunication == false) ? new AsyncCallback(OnDataReceived) : null);
                    TcpConnection connection           = new TcpConnection((Socket)socket, dataReceivedCallback);
                    mMessageLength = int.MinValue;
                    mClientConnections.Add(connection);

                    if (mReceiveDataInline && mUseSynchronousCommunication)
                    {
#if WINDOWS
                        Thread dataReceiveThread = new Thread(SynchronousReceiveData);
                        dataReceiveThread.Name = "TcpServer ReceiveData Thread";
                        connection.Tag         = dataReceiveThread;
                        mDataReceiveThreads.Add(dataReceiveThread);
                        dataReceiveThread.Start(connection);
#else
                        ThreadStartDelegateWrapper threadStartWrapper = new ThreadStartDelegateWrapper(new ThreadStartWrapperHandler(SynchronousReceiveData), connection);
                        Thread dataReceiveThread = new Thread(threadStartWrapper.Start);
                        dataReceiveThread.Name = "TcpServer ReceiveData Thread";
                        connection.Tag         = dataReceiveThread;
                        mDataReceiveThreads.Add(dataReceiveThread);
                        dataReceiveThread.Start();
#endif
                    }

                    OnConnected(new TcpConnectedEventArgs(connection));
                }
            }
        }
Example #2
0
        /// <summary>
        /// Primary worker thread.
        /// </summary>
        /// <param name="socket"></param>
        private void RunWorker(object socket)
        {
            lock (this)
            {
                if (mIsShuttingDown == false)
                {
                    AsyncCallback dataReceivedCallback = ((mReceiveDataInline) && (mUseSynchronousCommunication == false) ? new AsyncCallback(OnDataReceived) : null);
                    TcpConnection connection = new TcpConnection((Socket)socket, dataReceivedCallback);
                    mMessageLength = int.MinValue;
                    mClientConnections.Add(connection);

                    if (mReceiveDataInline && mUseSynchronousCommunication)
                    {
            #if WINDOWS
                        Thread dataReceiveThread = new Thread(SynchronousReceiveData);
                        dataReceiveThread.Name = "TcpServer ReceiveData Thread";
                        connection.Tag = dataReceiveThread;
                        mDataReceiveThreads.Add(dataReceiveThread);
                        dataReceiveThread.Start(connection);
            #else
                        ThreadStartDelegateWrapper threadStartWrapper = new ThreadStartDelegateWrapper(new ThreadStartWrapperHandler(SynchronousReceiveData), connection);
                        Thread dataReceiveThread = new Thread(threadStartWrapper.Start);
                        dataReceiveThread.Name = "TcpServer ReceiveData Thread";
                        connection.Tag = dataReceiveThread;
                        mDataReceiveThreads.Add(dataReceiveThread);
                        dataReceiveThread.Start();
            #endif
                    }

                    OnConnected(new TcpConnectedEventArgs(connection));
                }
            }
        }