重写了节点的view、viewmodel关系,实现了对画布元素的选取功能,重构了底层依赖,添加了对net .Framework4.6.1以上的Framework类库支持

This commit is contained in:
fengjiayi
2024-09-12 20:32:54 +08:00
parent ec6e09ced1
commit f286fc644a
120 changed files with 91218 additions and 761 deletions

View File

@@ -0,0 +1,71 @@
namespace Serein.DbSql
{
/// <summary>
/// 线程阻塞
/// </summary>
public class FifoManualResetEvent
{
private readonly object lockObj = new object();
/// <summary>
/// 让线程按进入时间顺序调用
/// </summary>
private readonly Queue<Thread> waitQueue = new Queue<Thread>();
private bool isSet;
public bool IsSet { get => isSet; set => isSet = value; }
public FifoManualResetEvent(bool initialState = false)
{
IsSet = initialState;
}
/// <summary>
/// 等待解锁
/// </summary>
public void Wait()
{
lock (lockObj)
{
if (IsSet)
{
// 获取到了发送的信号,线程开始重新执行
return;
}
var currentThread = Thread.CurrentThread;
waitQueue.Enqueue(currentThread);
while (!IsSet || waitQueue.Peek() != currentThread)
{
Monitor.Wait(lockObj);
}
waitQueue.Dequeue();
}
}
/// <summary>
/// 发送信号
/// </summary>
public void Set()
{
lock (lockObj)
{
IsSet = true;
Monitor.PulseAll(lockObj);
}
}
/// <summary>
/// 锁定当前线程
/// </summary>
public void Reset()
{
lock (lockObj)
{
IsSet = false;
}
}
}
}