public void Initialise() { isBlocking = false; job = null; jobResult = null; storedException = null; task = null; timeout = null; timeoutResult = false; }
public object QueueWait(MainLoopJob task) { DelegateTask dTask = cache.Dequeue(); dTask.Job = task; try { QueueWait(dTask); return(dTask.JobResult); } finally { cache.Enqueue(dTask); } }
public object QueueWait(MainLoopJob task) { var dTask = _cache.Dequeue(); dTask.Job = task; try { QueueWait(dTask); return(dTask.JobResult); } finally { _cache.Enqueue(dTask); } }
IAsyncResult BeginCreate(MainLoopJob task, AsyncCallback callback, object asyncState) { if (asyncResult != null) { throw new InvalidOperationException("Two asynchronous operations cannot be executed simultaenously"); } asyncResult = new TorrentCreatorAsyncResult(callback, asyncState); ThreadPool.QueueUserWorkItem(delegate { try { asyncResult.Dictionary = (BEncodedDictionary)task(); } catch (Exception ex) { asyncResult.SavedException = ex; } asyncResult.Complete(); }); return(asyncResult); }
public object QueueWait(MainLoopJob task) { if (IsInCurrentThread()) { return(task()); } var dTask = _cache.Dequeue(); dTask.Job = task; try { QueueWait(dTask); return(dTask.JobResult); } finally { _cache.Enqueue(dTask); } }
public DelegateTask(MainLoopJob task) { this.task = task; }
private IAsyncResult BeginCreate(MainLoopJob task, AsyncCallback callback, object asyncState) { if (asyncResult != null) throw new InvalidOperationException("Two asynchronous operations cannot be executed simultaenously"); asyncResult = new TorrentCreatorAsyncResult(callback, asyncState); ThreadPool.QueueUserWorkItem(delegate { try { asyncResult.Dictionary = (BEncodedDictionary) task(); } catch (Exception ex) { asyncResult.SavedException = ex; } asyncResult.Complete(); }); return asyncResult; }
public object QueueWait(MainLoopJob task) { DelegateTask dTask = cache.Dequeue(); dTask.Job = task; try { QueueWait(dTask); return dTask.JobResult; } finally { cache.Enqueue(dTask); } }
public object QueueWait(MainLoopJob task) { if (IsInCurrentThread()) return task(); var dTask = _cache.Dequeue(); dTask.Job = task; try { QueueWait(dTask); return dTask.JobResult; } finally { _cache.Enqueue(dTask); } }