/// <see cref="WorkQueue.IRequestHandler.HandleRequest"/> public WorkQueue.Response HandleRequest(WorkQueue.Request req, WorkQueue srcQ) { // Background thread (maybe) var preq = (PageRequest)req.Data; // only deal with own requests; we shouldn't ever get here though if (preq.srcPage != this) { return(null); } var res = new PageResponse(); res.pageData = new PageData(); WorkQueue.Response response; try { PrepareImpl(ref res.pageData); response = new WorkQueue.Response(req, true, res); } catch (Exception e) { // oops response = new WorkQueue.Response(req, false, res, e.Message); } return(response); }
/// <see cref="WorkQueue.IResponseHandler.CanHandleResponse"/> public bool CanHandleResponse(WorkQueue.Response res, WorkQueue srcq) { var preq = (PageRequest)res.Request.Data; // only deal with own requests // we do this because if we delete a page we want any pending tasks to be discarded if (preq.srcPage != this) { return(false); } else { return(true); } }
/// <see cref="WorkQueue.IResponseHandler.HandleResponse"/> public void HandleResponse(WorkQueue.Response res, WorkQueue srcq) { // Main thread var pres = (PageResponse)res.Data; var preq = (PageRequest)res.Request.Data; // only deal with own requests if (preq.srcPage != this) { return; } // final loading behaviour if (res.Succeeded) { Utility.Swap <List <PageContentCollection> >(ref this.mContentCollections, ref pres.pageData.collectionsToAdd); LoadImpl(); } this.mDeferredProcessInProgress = false; }