public Task <JsonNetResult> MyWork() { CancellationTokenSource tokenSource = new CancellationTokenSource(); CancellationToken token = tokenSource.Token; _counter++; int id = _counter; CancellationDictionary.Add(id, tokenSource); System.Diagnostics.Debug.WriteLine("GetGridResult started. Id: {0}, Time {1}", id, DateTime.Now.ToLongTimeString()); return(Task.Factory.StartNew(() => GetGridResult(token), token).ContinueWith(t => { System.Diagnostics.Debug.WriteLine("GetGridResult ended. Id: {0}, Time {1}", id, DateTime.Now.ToLongTimeString()); return new JsonNetResult(t.Result); })); }
public JsonNetResult CancelRequest(int?id) { JsonModel jsonModel; try { if (!id.HasValue) { if (CancellationDictionary.Keys.Count > 0) { id = CancellationDictionary.Keys.First(); } else { jsonModel = JsonModel.CreateFailure("There are no requests to cancel"); return(new JsonNetResult(jsonModel)); } } if (CancellationDictionary.ContainsKey(id.Value)) { CancellationDictionary[id.Value].Cancel(); System.Diagnostics.Debug.WriteLine(string.Format("GetGridResult cancelled. Id: {0}, Time {1}", id.Value, DateTime.Now.ToLongTimeString())); jsonModel = JsonModel.CreateSuccess(string.Format("Request with Id {0} was cancelled", id.Value)); } else { jsonModel = JsonModel.CreateFailure(string.Format("Request with Id {0} was not found", id.Value)); } } catch (Exception ex) { jsonModel = JsonModel.CreateFailure(ex.Message); } return(new JsonNetResult(jsonModel)); }