Skip to content

Commit 4050d84

Browse files
Cleanup and simplification.
1 parent 85bf200 commit 4050d84

9 files changed

+22
-49
lines changed

AsyncProcess.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
using Open.Disposable;
22
using System;
3-
using System.Diagnostics.CodeAnalysis;
43
using System.Diagnostics.Contracts;
54
using System.Threading;
65
using System.Threading.Tasks;
76

87
namespace Open.Threading
98
{
10-
[SuppressMessage("ReSharper", "MemberCanBeProtected.Global")]
11-
[SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
12-
[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
139
public class AsyncProcess<T> : DisposableBase
1410
where T : new()
1511
{
@@ -25,7 +21,7 @@ public AsyncProcess(Action<T> closure, TaskScheduler? scheduler = null)
2521
Closure = closure ?? throw new ArgumentNullException(nameof(closure));
2622
}
2723

28-
protected ReaderWriterLockSlim? SyncLock = new ReaderWriterLockSlim();
24+
protected ReaderWriterLockSlim? SyncLock = new();
2925

3026
protected TaskScheduler? Scheduler
3127
{
@@ -158,7 +154,7 @@ public class AsyncProcess : AsyncProcess<Progress>
158154
{
159155
protected AsyncProcess(TaskScheduler? scheduler) : base(scheduler)
160156
{
161-
157+
162158
}
163159

164160
// ReSharper disable once MemberCanBeProtected.Global

AsyncQuery.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ protected Task<TResult> EnsureProcessValued(bool once, TimeSpan? timeAllowedBefo
4444
}, () =>
4545
{
4646

47-
task = new Task<TResult>(Process, new Progress());
47+
task = new Task<TResult>(Process!, new Progress());
4848
task.Start(Scheduler);
4949
InternalTask = InternalTaskValued = task;
5050
Count++;

Container.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ namespace Open.Threading
99
public delegate void ValueInitialzedEventHandler<in T>(object source, T initValue);
1010
public delegate void ValueUpdatedEventHandler<in T>(object source, T originalValue, T newValue);
1111

12-
13-
[SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
1412
public interface IContainValue<out T>
1513
{
1614
/// <summary>
@@ -38,7 +36,6 @@ public interface IContainValue<out T>
3836
/// Interface for acting as a 'container' for values. Similar to Nullable but as an interface.
3937
/// </summary>
4038
/// <typeparam name="T">The type to be contained.</typeparam>
41-
[SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
4239
// ReSharper disable once InheritdocConsiderUsage
4340
public interface IContainer<T> : IContainValue<T>, IDisposable, IDisposalState // To ensure manual cleanup is implmented.
4441
{
@@ -63,8 +60,6 @@ public interface IContainer<T> : IContainValue<T>, IDisposable, IDisposalState /
6360
/// </summary>
6461
/// <typeparam name="T">The type to be contained.</typeparam>
6562
// ReSharper disable once InheritdocConsiderUsage
66-
[SuppressMessage("ReSharper", "VirtualMemberNeverOverridden.Global")]
67-
[SuppressMessage("ReSharper", "UnusedParameter.Global")]
6863
public abstract class ContainerBase<T> : DisposableBase, IContainer<T>
6964
{
7065
protected readonly ReaderWriterLockSlim SyncLock;
@@ -237,7 +232,6 @@ protected override void OnDispose()
237232
/// This class is the same as ContainerLight&lt;TLock&gt; but never throws away it's scheduler and can be re-rendered at anytime.
238233
/// </summary>
239234
/// <typeparam name="T">The type to be contained.</typeparam>
240-
[SuppressMessage("ReSharper", "MemberCanBeProtected.Global")]
241235
public class Container<T> : ContainerBase<T>
242236
{
243237
private Func<T>? _valueFactory;

IsActiveExtension.cs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,15 @@ public static bool IsActive(this Task target)
1414
if (target is null)
1515
throw new NullReferenceException();
1616

17-
switch (target.Status)
17+
return target.Status switch
1818
{
19-
case TaskStatus.Created:
20-
case TaskStatus.Running:
21-
case TaskStatus.WaitingForActivation:
22-
case TaskStatus.WaitingForChildrenToComplete:
23-
case TaskStatus.WaitingToRun:
24-
return true;
25-
//case TaskStatus.Canceled:
26-
//case TaskStatus.Faulted:
27-
//case TaskStatus.RanToCompletion:
28-
// return false;
29-
}
30-
31-
return false;
19+
TaskStatus.Created or
20+
TaskStatus.Running or
21+
TaskStatus.WaitingForActivation or
22+
TaskStatus.WaitingForChildrenToComplete or
23+
TaskStatus.WaitingToRun => true,
24+
_ => false,
25+
};
3226
}
3327
}
3428
}

ModificationSynchronizedBase.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11

22
using Open.Disposable;
33
using System;
4-
using System.Diagnostics.CodeAnalysis;
54
using System.Threading;
65

76
namespace Open.Threading
87
{
9-
10-
11-
[SuppressMessage("ReSharper", "VirtualMemberCallInConstructor")]
128
public abstract class ModificationSynchronizedBase : DisposableBase
139
{
1410

ModificationSynchronizer.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using Open.Disposable;
22
using System;
3-
using System.Diagnostics.CodeAnalysis;
43
using System.Threading;
54

65
namespace Open.Threading
@@ -13,7 +12,6 @@ public interface IReadOnlyModificationSynchronizer
1312
T Reading<T>(Func<T> action);
1413
}
1514

16-
[SuppressMessage("ReSharper", "UnusedMemberInSuper.Global")]
1715
public interface IModificationSynchronizer : IReadOnlyModificationSynchronizer
1816
{
1917

Open.Threading.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<TargetFrameworks>netstandard2.0;netstandard2.1</TargetFrameworks>
55
<LangVersion>latest</LangVersion>
66
<Nullable>enable</Nullable>
7+
<EnableNETAnalyzers>true</EnableNETAnalyzers>
78
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
89
<Authors>electricessence</Authors>
910
<Description>

Progress.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
namespace Open.Threading
66
{
7-
[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
87
public class Progress
98
{
109
public Progress()
@@ -78,7 +77,7 @@ public void Run(Action closure, bool propagateException = false)
7877
}
7978

8079
#if NETSTANDARD2_1
81-
[return:MaybeNull]
80+
[return: MaybeNull]
8281
#endif
8382
public T Execute<T>(Func<T> query, bool propagateException = false)
8483
{

ThreadSafety.cs

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,20 @@ namespace Open.Threading
1616
public static class ThreadSafety
1717
{
1818
public static bool IsValidSyncObject(object syncObject)
19-
{
20-
// Avoid the lock object being immutable...
21-
switch (syncObject)
19+
=> syncObject switch // Avoid the lock object being immutable...
2220
{
23-
case string _:
24-
case ValueType _:
25-
case null:
26-
return false;
27-
}
28-
29-
return true;
30-
}
21+
string _ or
22+
ValueType _ or
23+
null => false,
24+
_ => true,
25+
};
3126

3227
internal static void ValidateSyncObject(object syncObject)
3328
{
3429
if (syncObject is null)
3530
throw new ArgumentNullException(nameof(syncObject));
3631
if (!IsValidSyncObject(syncObject))
37-
throw new ArgumentException(nameof(syncObject));
32+
throw new ArgumentException("Is not valid sync object.", nameof(syncObject));
3833
}
3934

4035
internal static void ValidateMillisecondsTimeout(int? millisecondsTimeout)
@@ -364,7 +359,7 @@ public static T InitializeValue<T>(ref Lazy<T> lazy, Func<T> factory)
364359
}
365360

366361
private static readonly ConditionalWeakTable<object, ReadWriteHelper<object>> _sychronizeReadWriteRegistry
367-
= new ConditionalWeakTable<object, ReadWriteHelper<object>>();
362+
= new();
368363

369364
private static ReadWriteHelper<object> GetReadWriteHelper(object key)
370365
{
@@ -739,7 +734,7 @@ public static bool SynchronizeWrite<TSync>(TSync syncObject, Action closure, int
739734
public class Helper<TKey, TSyncObject>
740735
where TSyncObject : class, new()
741736
{
742-
protected readonly ConcurrentDictionary<TKey, TSyncObject> _locks = new ConcurrentDictionary<TKey, TSyncObject>();
737+
protected readonly ConcurrentDictionary<TKey, TSyncObject> _locks = new();
743738

744739
/// <summary>
745740
/// Returns a unique object based on the provied cacheKey for use in synchronization.

0 commit comments

Comments
 (0)