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