public ResultFuture <TResult> Enqueue <T, TResult>(T data, Func <T, TResult> work) { var future = new ResultFuture <TResult>(); DoWork(data, work, future); return(future); }
public ResultFuture <T> Enqueue <T>(Func <T> work) { var future = new ResultFuture <T>(); DoWork(work, future); return(future); }
public ResultFuture <TResult> Enqueue <T, TResult>(T data, Func <T, TResult> work) { var future = new ResultFuture <TResult>(); ThreadPool.QueueUserWorkItem(o => DoWork((T)o, work, future), data); return(future); }
public ResultFuture <T> Enqueue <T>(Func <T> work) { var future = new ResultFuture <T>(); ThreadPool.QueueUserWorkItem(o => DoWork(work, future)); return(future); }
private static void DoWork <T>(Func <T> work, ResultFuture <T> future) { try { future.Set(work()); } catch (Exception e) { future.Failed(e); } }
private static void DoWork <T, TResult>(T data, Func <T, TResult> work, ResultFuture <TResult> future) { try { future.Set(work(data)); } catch (Exception e) { future.Failed(e); } }