using System.Collections.Generic;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;
namespace TPLDataFlowTest
public static void Main(string[] args)
var service = new Service();
public event Action<ServerClient> ClientConnected;
SimulateClientConnections();
async Task SimulateClientConnections()
ClientConnected.Invoke(new ServerClient());
public event Action<string> MessageReceived;
public Queue<string> ReceivedMessages;
SimulateReceivedMessages();
async Task SimulateReceivedMessages()
MessageReceived.Invoke("Message #" + i.ToString());
server.ClientConnected += OnClientConnected;
void OnClientConnected(ServerClient serverClient)
var serverUser = new ServiceUser(serverClient);
Console.WriteLine("New user connected");
ServerClient serverClient;
public ServiceUser(ServerClient serverClient)
this.serverClient = serverClient;