using System.Threading.Tasks;
class Client : IDisposable
private CancellationTokenSource _cts;
_cts = new CancellationTokenSource();
public async Task ConnectAsync(ClientEndpoint ep)
await Task.Delay(TimeSpan.FromMilliseconds(1));
_readTask = Task.Run (async () => await ReadLoop (_cts.Token),
private async Task ReadLoop(CancellationToken ct)
await Task.Delay(TimeSpan.FromMilliseconds(1));
while (!ct.IsCancellationRequested)
await Task.Delay(TimeSpan.FromMilliseconds(10), ct);
public static void Main (string[] args)
Console.WriteLine("Client");