aboutsummaryrefslogtreecommitdiff
path: root/ExcelTaskUtil.cs
diff options
context:
space:
mode:
authorSergey Chebotar <s.chebotar@gmail.com>2021-11-14 12:27:49 +0300
committerSergey Chebotar <s.chebotar@gmail.com>2021-11-14 12:27:49 +0300
commitf5234e956c79d3019e975a4d3550574c92f769e7 (patch)
tree9a3998da9383dfef2eed7d5b5c7aecabbd6e08b5 /ExcelTaskUtil.cs
parent2290f1b3403640025cbf2522f83f53b5913470c9 (diff)
Edit ASync method. Delete unnecessary classes
Diffstat (limited to 'ExcelTaskUtil.cs')
-rw-r--r--ExcelTaskUtil.cs133
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();
- }
- }
-
- }
-}
-