milimoe e7214c3fb9
添加新的枚举、字符常量和方法 (#59)
* 添加大量新的枚举,添加缺少的枚举字符串,修改枚举转字符串方法的位置

* 添加StartGame和Gaming的SocketHandler方法

* 添加MainInvokeType.StartGame

* 优化代码格式

* 添加默认的User.ToString()

* 添加EndGame

* 添加GameMode.GetTypeString

* 添加GameMode.GetRoomType
2023-11-23 00:43:34 +08:00

56 lines
1.4 KiB
C#

namespace Milimoe.FunGame.Core.Library.Common.Architecture
{
/// <summary>
/// 继承这个类可以获得异步等待的功能
/// <para>参考实现 <see cref="SocketHandlerModel"/></para>
/// </summary>
public abstract class AsyncAwaiter<T>
{
/// <summary>
/// 接收到的实例
/// </summary>
protected abstract T? Work { get; set; }
/// <summary>
/// 是否处于等待的状态
/// </summary>
protected bool Working { get; set; } = false;
/// <summary>
/// 异步操作前,请设置为等待状态
/// </summary>
protected virtual void SetWorking()
{
Working = true;
Work = default;
}
/// <summary>
/// 等待任务完成(需要自己异步)
/// </summary>
protected virtual void WaitForWorkDone()
{
while (true)
{
if (!Working) break;
Thread.Sleep(100);
}
}
/// <summary>
/// 异步等待任务完成
/// </summary>
protected async virtual Task WaitForWorkDoneAsync()
{
await Task.Factory.StartNew(() =>
{
while (true)
{
if (!Working) break;
Thread.Sleep(100);
}
});
}
}
}