private void StartLoop(CancellationToken cancellationToken) { Task.Run(() => { var timeout = TimeSpan.FromMilliseconds(10); using (var server = new ResponseSocket()) { server.Bind(DefaultPublicationAddress); while (!cancellationToken.IsCancellationRequested) { var bytes = new List <byte[]>(); if (!server.TryReceiveMultipartBytes(timeout, ref bytes)) { continue; } var requestType = ParseRequestType(bytes[0]); SendResponse(server, requestType); } } }, cancellationToken); }