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