diff options
author | Sergey Chebotar <s.chebotar@gmail.com> | 2021-11-14 12:27:49 +0300 |
---|---|---|
committer | Sergey Chebotar <s.chebotar@gmail.com> | 2021-11-14 12:27:49 +0300 |
commit | f5234e956c79d3019e975a4d3550574c92f769e7 (patch) | |
tree | 9a3998da9383dfef2eed7d5b5c7aecabbd6e08b5 /ExcelTaskUtil.cs | |
parent | 2290f1b3403640025cbf2522f83f53b5913470c9 (diff) |
Edit ASync method. Delete unnecessary classes
Diffstat (limited to 'ExcelTaskUtil.cs')
-rw-r--r-- | ExcelTaskUtil.cs | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/ExcelTaskUtil.cs b/ExcelTaskUtil.cs deleted file mode 100644 index c7d1b94..0000000 --- a/ExcelTaskUtil.cs +++ /dev/null @@ -1,133 +0,0 @@ -using ExcelDna.Integration; -using System.Threading.Tasks; -using System; -using System.Threading; - -namespace Rehau.Sku.Assist -{ - internal static class ExcelTaskUtil - { - public static object Run<TResult>(string callerFunctionName, object callerParameters, Func<CancellationToken, Task<TResult>> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var cts = new CancellationTokenSource(); - var task = taskSource(cts.Token); - return new ExcelTaskObservable<TResult>(task, cts); - }); - } - - public static object Run<TResult>(string callerFunctionName, object callerParameters, Func<Task<TResult>> taskSource) - { - return ExcelAsyncUtil.Observe(callerFunctionName, callerParameters, delegate - { - var task = taskSource(); - return new ExcelTaskObservable<TResult>(task); - }); - } - - class ExcelTaskObservable<TResult> : IExcelObservable - { - readonly Task<TResult> _task; - readonly CancellationTokenSource _cts; - public ExcelTaskObservable(Task<TResult> task) - { - _task = task; - } - - public ExcelTaskObservable(Task<TResult> task, CancellationTokenSource cts) - : this(task) - { - _cts = cts; - } - - public IDisposable Subscribe(IExcelObserver observer) - { - switch (_task.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(_task.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(_task.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(_task)); - break; - default: - _task.ContinueWith(t => - { - switch (t.Status) - { - case TaskStatus.RanToCompletion: - observer.OnNext(t.Result); - observer.OnCompleted(); - break; - case TaskStatus.Faulted: - observer.OnError(t.Exception.InnerException); - break; - case TaskStatus.Canceled: - observer.OnError(new TaskCanceledException(t)); - break; - } - }); - break; - } - - if (_cts != null) - { - return new CancellationDisposable(_cts); - } - - return DefaultDisposable.Instance; - } - } - - sealed class DefaultDisposable : IDisposable - { - - public static readonly DefaultDisposable Instance = new DefaultDisposable(); - - DefaultDisposable() - { - } - - public void Dispose() - { - } - } - - sealed class CancellationDisposable : IDisposable - { - - readonly CancellationTokenSource cts; - public CancellationDisposable(CancellationTokenSource cts) - { - if (cts == null) - { - throw new ArgumentNullException("cts"); - } - - this.cts = cts; - } - - public CancellationDisposable() - : this(new CancellationTokenSource()) - { - } - - public CancellationToken Token - { - get { return cts.Token; } - } - - public void Dispose() - { - cts.Cancel(); - } - } - - } -} - |