Skip to content

Commit d38a154

Browse files
author
Oren (electricessence)
committed
Inspection and documentation fixes
1 parent d60ef93 commit d38a154

File tree

8 files changed

+163
-309
lines changed

8 files changed

+163
-309
lines changed

AsyncProcess.cs

Lines changed: 35 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
11
using Open.Disposable;
22
using System;
3+
using System.Diagnostics.CodeAnalysis;
34
using System.Diagnostics.Contracts;
45
using System.Threading;
56
using System.Threading.Tasks;
67

78
namespace Open.Threading
89
{
10+
[SuppressMessage("ReSharper", "MemberCanBeProtected.Global")]
11+
[SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
12+
[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
913
public class AsyncProcess<T> : DisposableBase
1014
where T : new()
1115
{
16+
17+
public AsyncProcess(Action<T> closure, TaskScheduler scheduler = null)
18+
{
19+
Closure = closure;
20+
21+
Scheduler = scheduler ?? TaskScheduler.Default;
22+
Count = 0;
23+
}
24+
1225
protected readonly ReaderWriterLockSlim SyncLock = new ReaderWriterLockSlim();
1326

1427
protected TaskScheduler Scheduler
@@ -17,10 +30,10 @@ protected TaskScheduler Scheduler
1730
private set;
1831
}
1932

20-
protected virtual Action<T> Closure
33+
protected Action<T> Closure
2134
{
2235
get;
23-
set;
36+
private set;
2437
}
2538

2639
protected Task InternalTask
@@ -41,30 +54,13 @@ public Exception LastFault
4154
protected set;
4255
}
4356

44-
protected AsyncProcess(TaskScheduler scheduler = null)
45-
: base()
46-
{
47-
Scheduler = scheduler ?? TaskScheduler.Default;
48-
Count = 0;
49-
}
50-
51-
public AsyncProcess(Action<T> closure, TaskScheduler scheduler = null)
52-
: this(scheduler)
53-
{
54-
Closure = closure;
55-
}
56-
5757
public int Count
5858
{
5959
get;
6060
protected set;
6161
}
6262

63-
public bool HasBeenRun
64-
{
65-
get { return Count != 0; }
66-
}
67-
63+
public bool HasBeenRun => Count != 0;
6864

6965
//long _processCount = 0;
7066
protected virtual void Process(object progress)
@@ -84,13 +80,13 @@ protected virtual void Process(object progress)
8480
{
8581
SyncLock.Write(() => LastFault = ex);
8682
}
87-
finally
88-
{
89-
//Interlocked.Decrement(ref _processCount);
90-
}
83+
//finally
84+
//{
85+
// //Interlocked.Decrement(ref _processCount);
86+
//}
9187
}
9288

93-
protected virtual Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefresh)
89+
protected virtual Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefresh = null)
9490
{
9591
Task task = null;
9692
SyncLock.ReadWriteConditionalOptimized(
@@ -114,18 +110,8 @@ protected virtual Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefre
114110
return task;
115111
}
116112

117-
protected Task EnsureProcess(bool once)
118-
{
119-
return EnsureProcess(once, null);
120-
}
121-
122-
public bool IsRunning
123-
{
124-
get
125-
{
126-
return InternalTask?.IsActive() ?? false;
127-
}
128-
}
113+
// ReSharper disable once MemberCanBeProtected.Global
114+
public bool IsRunning => InternalTask?.IsActive() ?? false;
129115

130116
public void Wait(bool once = true)
131117
{
@@ -134,10 +120,9 @@ public void Wait(bool once = true)
134120
}
135121

136122
public bool EnsureActive(bool once = false)
137-
{
138-
return EnsureProcess(once).IsActive();
139-
}
123+
=> EnsureProcess(once).IsActive();
140124

125+
// ReSharper disable once MemberCanBeProtected.Global
141126
public virtual T Progress
142127
{
143128
get
@@ -166,30 +151,23 @@ protected override void OnDispose(bool calledExplicitly)
166151

167152
public class AsyncProcess : AsyncProcess<Progress>
168153
{
169-
protected AsyncProcess(TaskScheduler scheduler = null)
170-
: base(scheduler)
171-
{
172-
}
173-
154+
// ReSharper disable once MemberCanBeProtected.Global
174155
public AsyncProcess(Action<Progress> closure, TaskScheduler scheduler = null)
175-
: this(scheduler)
156+
: base(closure, scheduler)
176157
{
177-
Closure = closure;
178158
}
179159

180160
public string TimeStatistics
181161
{
182162
get
183163
{
184164
var result = string.Empty;
185-
if (LatestCompleted != default(DateTime))
165+
if (LatestCompleted != default)
186166
result += "\n" + (DateTime.Now - LatestCompleted).ToString() + " ago";
187167

188-
if (IsRunning)
189-
{
190-
var p = Progress;
191-
result += "\n" + p.EstimatedTimeLeftString + " remaining";
192-
}
168+
if (!IsRunning) return result;
169+
var p = Progress;
170+
result += "\n" + p.EstimatedTimeLeftString + " remaining";
193171

194172
return result;
195173
}
@@ -208,10 +186,10 @@ protected override void Process(object progress)
208186
SyncLock.Write(() => LatestCompleted = DateTime.Now);
209187
p.Failed(ex.ToString());
210188
}
211-
finally
212-
{
213-
//Interlocked.Decrement(ref _processCount);
214-
}
189+
//finally
190+
//{
191+
// //Interlocked.Decrement(ref _processCount);
192+
//}
215193
}
216194

217195
}

AsyncQuery.cs

Lines changed: 30 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ protected Task<TResult> InternalTaskValued
2020
}
2121

2222
public AsyncQuery(Func<Progress, TResult> query, TaskScheduler scheduler = null)
23-
: base(scheduler)
23+
: base(null, scheduler)
2424
{
2525
Closure = query;
2626
}
2727

28-
protected Task<TResult> EnsureProcessValued(bool once, TimeSpan? timeAllowedBeforeRefresh)
28+
protected Task<TResult> EnsureProcessValued(bool once, TimeSpan? timeAllowedBeforeRefresh = null)
2929
{
3030

3131
Task<TResult> task = null;
@@ -52,12 +52,7 @@ protected Task<TResult> EnsureProcessValued(bool once, TimeSpan? timeAllowedBefo
5252
return task;
5353
}
5454

55-
protected Task<TResult> EnsureProcessValued(bool once)
56-
{
57-
return EnsureProcessValued(once, null);
58-
}
59-
60-
protected override Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefresh)
55+
protected override Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefresh = null)
6156
{
6257
return EnsureProcessValued(once, timeAllowedBeforeRefresh);
6358
}
@@ -79,11 +74,11 @@ protected override Task EnsureProcess(bool once, TimeSpan? timeAllowedBeforeRefr
7974
SyncLock.Write(() => LatestCompleted = DateTime.Now);
8075
p.Failed(ex.ToString());
8176
}
82-
finally
83-
{
84-
//Interlocked.Decrement(ref _processCount);
85-
}
86-
return default(TResult);
77+
//finally
78+
//{
79+
// //Interlocked.Decrement(ref _processCount);
80+
//}
81+
return default;
8782
}
8883

8984
public bool IsCurrentDataReady
@@ -107,15 +102,12 @@ public override Progress Progress
107102
get
108103
{
109104
var t = InternalTask;
110-
if (t == null)
111-
{
112-
var result = new Progress();
113-
if (IsLatestAvailable)
114-
result.Finish();
115-
return result;
116-
}
105+
if (t != null) return (Progress)(t.AsyncState);
106+
var result = new Progress();
107+
if (IsLatestAvailable)
108+
result.Finish();
109+
return result;
117110

118-
return (Progress)(t.AsyncState);
119111
}
120112
}
121113

@@ -154,37 +146,22 @@ public virtual void OverrideLatest(TResult value, Func<TResult, TResult, bool> u
154146

155147
public TResult Latest
156148
{
157-
get
158-
{
159-
return GetLatest();
160-
}
161-
protected set
162-
{
163-
OverrideLatest(value);
164-
}
149+
get => GetLatest();
150+
protected set => OverrideLatest(value);
165151
}
166152

167153

168-
public TResult LatestEnsured
169-
{
170-
get
171-
{
172-
return GetLatestOrRunning(out var completed);
173-
}
174-
}
154+
public TResult LatestEnsured => GetLatestOrRunning(out _);
175155

176156
public bool WaitForRunningToComplete(TimeSpan? waitForCurrentTimeout = null)
177157
{
178158
var task = SyncLock.ReadValue(() => InternalTaskValued);
179-
if (task != null)
180-
{
181-
if (waitForCurrentTimeout.HasValue)
182-
task.Wait(waitForCurrentTimeout.Value);
183-
else
184-
task.Wait();
185-
return true;
186-
}
187-
return false;
159+
if (task == null) return false;
160+
if (waitForCurrentTimeout.HasValue)
161+
task.Wait(waitForCurrentTimeout.Value);
162+
else
163+
task.Wait();
164+
return true;
188165
}
189166

190167

@@ -226,7 +203,7 @@ public virtual bool TryGetLatest(out TResult latest, out DateTime completed)
226203

227204
public virtual bool TryGetLatest(out TResult latest)
228205
{
229-
return TryGetLatest(out latest, out var completed);
206+
return TryGetLatest(out latest, out _);
230207
}
231208

232209
public virtual bool TryGetLatestOrStart(out TResult latest, out DateTime completed)
@@ -239,13 +216,11 @@ public virtual bool TryGetLatestOrStart(out TResult latest, out DateTime complet
239216

240217
public virtual bool TryGetLatestOrStart(out TResult latest)
241218
{
242-
return TryGetLatestOrStart(out latest, out var completed);
219+
return TryGetLatestOrStart(out latest, out _);
243220
}
244221

245222
public virtual bool TryGetLatestOrStart()
246-
{
247-
return TryGetLatestOrStart(out var latest, out var completed);
248-
}
223+
=> TryGetLatestOrStart(out _, out _);
249224

250225

251226
public TResult Refresh(TimeSpan? timeAllowedBeforeRefresh = null, TimeSpan? waitForCurrentTimeout = null)
@@ -269,11 +244,9 @@ public TResult GetRunningValue()
269244

270245
public TResult GetLatestOrRunning(out DateTime completed)
271246
{
272-
if (!TryGetLatest(out var result, out completed))
273-
{
274-
result = RunningValue;
275-
completed = DateTime.Now;
276-
}
247+
if (TryGetLatest(out var result, out completed)) return result;
248+
result = RunningValue;
249+
completed = DateTime.Now;
277250
return result;
278251
}
279252

@@ -282,7 +255,8 @@ public TResult GetLatestOrRunning(out DateTime completed)
282255
protected override void OnDispose(bool calledExplicitly)
283256
{
284257
base.OnDispose(calledExplicitly);
285-
_latest = default(TResult);
258+
_latest = default;
259+
Closure = null;
286260
}
287261
}
288262
}

0 commit comments

Comments
 (0)