Example #1
0
        protected override void QueueTask(Task task)
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(nameof(GrainTaskScheduler));
            }

            lock (_sync) {
                _last = _last.ContinueWith(_ => {
                    bool res = TryExecuteTask(task);

                    if (task.IsFaulted)
                    {
                        _exceptionSink.Add(task.Exception);                      //need to distinguish between loose and handled exceptions
                    }
                }, _cancelToken, TaskContinuationOptions.None, _outerScheduler); //catch exceptions also?
            }
        }