Пример #1
0
        private static TransportAsyncResult Perform(TransportAsyncWorker worker)
        {
            WaitCallback workItem;

            switch (worker._operation)
            {
            case OperationType.Connect:
            {
                workItem = new WaitCallback(worker.Connect);
                break;
            }

            case OperationType.Accept:
            {
                workItem = new WaitCallback(worker.Accept);
                break;
            }

            case OperationType.Send:
            {
                workItem = new WaitCallback(worker.Send);
                break;
            }

            case OperationType.Receive:
            {
                workItem = new WaitCallback(worker.Receive);
                break;
            }

            default:
            {
                throw new ArgumentException("Invalid operation type", "operation");
            }
            }

            // start worker thread
            ThreadPool.QueueUserWorkItem(workItem);
            return(worker._result);
        }
        private static TransportAsyncResult Perform(TransportAsyncWorker worker)
        {
            WaitCallback workItem;

            switch (worker._operation)
            {
                case OperationType.Connect:
                {
                    workItem = worker.Connect;
                    break;
                }
                case OperationType.Accept:
                {
                    workItem = worker.Accept;
                    break;
                }
                case OperationType.Send:
                {
                    workItem = worker.Send;
                    break;
                }
                case OperationType.Receive:
                {
                    workItem = worker.Receive;
                    break;
                }
                default:
                {
                    throw new ArgumentException("Invalid operation type", "operation");
                }
            }

            // start worker thread
            ThreadPool.QueueUserWorkItem(workItem);
            return worker._result;
        }
		public TransportAsyncResult(TransportAsyncWorker worker, object state)
		{
			_state = state;
			_worker = worker;
		}
 public TransportAsyncResult(TransportAsyncWorker worker, object state)
 {
     _state  = state;
     _worker = worker;
 }
Пример #5
0
 public IAsyncResult BeginSend(byte[] buffer, int offset, int size, AsyncCallback callback, object state)
 {
     return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Send,
                                         buffer, offset, size, callback, state));
 }
Пример #6
0
 public IAsyncResult BeginAccept(AsyncCallback callback, object state)
 {
     return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Accept,
                                         callback, state));
 }
Пример #7
0
 public IAsyncResult BeginConnect(string url, AsyncCallback callback, object state)
 {
     return(TransportAsyncWorker.Perform(_transport, TransportAsyncWorker.OperationType.Connect,
                                         url, callback, state));
 }