This commit is contained in:
CortexCore
2024-11-20 11:36:51 +08:00
parent 5d19061fab
commit ce049035e2
20 changed files with 180 additions and 184 deletions

View File

@@ -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()