public void Run(IPAddress serverAddress, int serverPort, ref CancellationTokenSource cancellationTokenSource, ref ManualResetEventSlim enviromentExitWait) { _enviromentExitWait = enviromentExitWait; _cancellationTokenSource = cancellationTokenSource; _marketSnapshotBuilder = new MarketSnapshotBuilder(); var socket = new MarketDepthSocket(); _marketDepthSocket = socket; socket.OnError += OnErrorHandler; socket.OnDisconnected += OnDisconnectedHandler; socket.OnConnected += OnConnectedHandler; socket.OnException += OnExceptionHandler; socket.OnMarketChange += OnMarketChangeHandler; socket.OnMarketSnapshotLevel3 += OnMarketSnapshotHandler; void RunSocket() { try { socket.Connect(new IPEndPoint(serverAddress.MapToIPv4(), serverPort)); socket.WaitResponses(_cancellationTokenSource.Token); } catch { try { socket.Dispose(); } catch { } } finally { Dispose(); } } Task.Factory.StartNew( () => RunSocket(), TaskCreationOptions.LongRunning); }
public MarketClient(ManualResetEventSlim enviromentExitWait, ManualResetEventSlim processesStartedEvent) { _enviromentExitWait = enviromentExitWait; _processesStartedEvent = processesStartedEvent; _marketSnapshotBuilder = new MarketSnapshotBuilder(); }