public async Task CancelTaskShouldCancelTheOperationAndSendNotification()
        {
            serviceHostMock.AddEventHandling(TaskCreatedNotification.Type, null);
            serviceHostMock.AddEventHandling(TaskStatusChangedNotification.Type, null);
            DatabaseOperationStub operation = new DatabaseOperationStub();
            SqlTask sqlTask      = service.TaskManager.CreateTask(taskMetaData, operation.FunctionToRun, operation.FunctionToCancel);
            Task    taskToVerify = sqlTask.RunAsync().ContinueWith(task =>
            {
                serviceHostMock.Verify(x => x.SendEvent(TaskStatusChangedNotification.Type,
                                                        It.Is <TaskProgressInfo>(t => t.Status == SqlTaskStatus.Canceled)), Times.AtLeastOnce());
            });
            CancelTaskParams cancelParams = new CancelTaskParams
            {
                TaskId = sqlTask.TaskId.ToString()
            };

            await RunAndVerify <bool>(
                test : (requestContext) => service.HandleCancelTaskRequest(cancelParams, requestContext),
                verify : ((result) =>
            {
            }));

            serviceHostMock.Verify(x => x.SendEvent(TaskCreatedNotification.Type,
                                                    It.Is <TaskInfo>(t => t.TaskId == sqlTask.TaskId.ToString())), Times.Once());
            await taskToVerify;
        }
        internal async Task HandleCancelTaskRequest(CancelTaskParams cancelTaskParams, RequestContext <bool> context)
        {
            Logger.Write(TraceEventType.Verbose, "HandleCancelTaskRequest");
            Func <Task <bool> > cancelTask = () =>
            {
                Validate.IsNotNull(nameof(cancelTaskParams), cancelTaskParams);

                return(Task.Factory.StartNew(() =>
                {
                    Guid taskId;
                    if (Guid.TryParse(cancelTaskParams.TaskId, out taskId))
                    {
                        TaskManager.CancelTask(taskId);
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }));
            };

            await HandleRequestAsync(cancelTask, context, "HandleCancelTaskRequest");
        }