public async Task RunAsync() { var executor = new SingleThreadExecutor(); var tokenSource = new CancellationTokenSource(); ConsoleCancelEventHandler handler = (s, e) => { e.Cancel = true; // Violate condition #2 Task.Run(() => tokenSource.Cancel()); }; Console.CancelKeyPress += handler; try { await Task.Delay(TimeSpan.FromHours(1.0), tokenSource.Token); } catch (OperationCanceledException) { Console.WriteLine("Cancelled"); } Console.CancelKeyPress -= handler; }
public async Task RunAsync() { var executor = new SingleThreadExecutor(); var tokenSource = executor.Execute(() => new CancelKeyPressedTokenSource()); try { await Task.Delay(TimeSpan.FromHours(1.0), tokenSource.Token); } catch (OperationCanceledException) { Console.WriteLine("Cancelled"); } executor.Execute(() => tokenSource.Dispose()); }
private UdpReceiver(IPEndPoint endPointToConnect, int responseReceivingPort, IPEndPoint endPointToBind, bool reuseAddressFlag, short ttl, bool allowBroadcast, IPAddress multicastGroup, bool multicastLoopbackFlag) { using (EneterTrace.Entering()) { myEndPointToConnect = endPointToConnect; myResponseReceivingPort = responseReceivingPort; myEndPointToBind = endPointToBind; myReuseAddressFlag = reuseAddressFlag; myTtl = ttl; myAllowBroadcastFlag = allowBroadcast; myMulticastGroup = multicastGroup; myMulticastLoopbackFlag = multicastLoopbackFlag; myWorkingThreadDispatcher = new SingleThreadExecutor(); } }
static void TestFutures() { IExecutor executor = new SingleThreadExecutor(); Promise p = new Promise(); Future f = p.GetFuture().Then(result => { int ret = (int)result; Console.WriteLine("result is " + ret); ret++; return(ret); }).Then(result => { int ret = (int)result; Console.WriteLine("result is " + ret); ret++; return(ret); }).Via(executor).Then(result => { Console.WriteLine("result is " + result); int id = (int)result; return(new Person(id)); }).Via(executor).Then(result => { Person ps = (Person)result; Console.WriteLine("person id is " + ps.id + " name is " + ps.name); return(ps); }); p.SetValue(1); Person ps = (Person)f.Get(); Console.WriteLine("person id is " + ps.id + " name is " + ps.name); }
public TalkViewModel() { _executor = new SingleThreadExecutor(); _model.TalkSubject.Subscribe(AddMessage); }