public BackgroundWorkerItem(WorkerArgument <object> wa, int key, BackgroundWorker <WorkerArgument <object>, object, object> backgroundWorker) : base( progress: backgroundWorker.GetProgress().Select(_ => new ProgressChangedEventArgs(_.ProgressPercentage, _.UserState)), completion: backgroundWorker.GetCompletion().Select(_ => (AsyncCompletedEventArgs)_), actn: () => backgroundWorker.RunWorkerAsync(wa), key: key.ToString()) { }
public BackgroundWorkerCommandQueue(IObservable <WorkerArgument <T> > mainMethod = null) : base(_backgroundWorker.GetCompletion().Select(_ => _.Result)) { _busy = new System.Threading.ManualResetEvent(true); _backgroundWorker.DoWork += new EventHandler <DoWorkEventArgs <WorkerArgument <T>, T> >((a, b) => { new BackgroundWorkerDoWork(_busy).DoWork_Handler(_backgroundWorker, b); }); int i = 0; mainMethod?.Subscribe(_ => { i++; var x = new BackgroundWorkerItem <T>(_, i, _backgroundWorker); Enqueue(x); }); React(commands); }