1
This commit is contained in:
@@ -26,19 +26,37 @@ namespace BITKit
|
||||
public class MyHandle:IDisposable
|
||||
{
|
||||
private readonly ValidHandle _validHandle;
|
||||
|
||||
public MyHandle(ValidHandle validHandle)
|
||||
private bool _isDisable = false;
|
||||
public MyHandle(ValidHandle validHandle,bool isDisable = false)
|
||||
{
|
||||
_validHandle = validHandle;
|
||||
_validHandle.AddElement(this);
|
||||
|
||||
_isDisable = isDisable;
|
||||
if (isDisable)
|
||||
{
|
||||
_validHandle.AddDisableElements(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
_validHandle.AddElement(this);
|
||||
}
|
||||
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
_validHandle.RemoveElement(this);
|
||||
if (_isDisable)
|
||||
{
|
||||
_validHandle.RemoveDisableElements(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
_validHandle.RemoveElement(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public MyHandle GetHandle() => new MyHandle(this);
|
||||
public MyHandle GetDisableHandle()=> new MyHandle(this,true);
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
@@ -69,7 +87,7 @@ namespace BITKit
|
||||
public readonly List<object> disableObjs = new List<object>();
|
||||
private bool tempEnable;
|
||||
private Action<bool> EventOnEnableChanged;
|
||||
private readonly List<UniTaskCompletionSource> _completionSources = new();
|
||||
private readonly Queue<UniTaskCompletionSource> _completionSources = new();
|
||||
|
||||
|
||||
public void AddElement(object obj)
|
||||
@@ -96,7 +114,7 @@ namespace BITKit
|
||||
EventOnEnableChanged.Invoke(enableHandle);
|
||||
}
|
||||
if (tempEnable) return;
|
||||
foreach (var cs in _completionSources)
|
||||
if (_completionSources.TryDequeue(out var cs))
|
||||
{
|
||||
cs.TrySetResult();
|
||||
}
|
||||
@@ -197,7 +215,7 @@ namespace BITKit
|
||||
return UniTask.CompletedTask.GetAwaiter();
|
||||
}
|
||||
var cs = new UniTaskCompletionSource();
|
||||
_completionSources.Add(cs);
|
||||
_completionSources.Enqueue(cs);
|
||||
return cs.Task.GetAwaiter();
|
||||
}
|
||||
public void Clear()
|
||||
|
Reference in New Issue
Block a user