/// <summary> /// 获取消息 /// </summary> /// <typeparam name="TInfo"></typeparam> /// <param name="handler"></param> /// <param name="error"></param> public bool GetInfo <TInfo>(Action <List <TInfo>, int, int> handler, Action <ErrorResult> error) where TInfo : IInfo { // 测试连接状态 if (!TryConnect(error)) { return(false); } // 获取信息环境准备 var are = new AutoResetEvent(false); var flag = false; var cmd = Command.Create(typeof(TInfo).Name); var info = new InfoHandler <TInfo>(Serial) { DataHandler = handler, Exit = success => { flag = success; are.Set(); } }; // 开始获取数据 info.BeginGetInfo(cmd.ToString(), error); are.WaitOne(); return(flag); }
/// <summary> /// 获取文件列表 /// </summary> /// <param name="dir"></param> /// <param name="progress"></param> /// <param name="error"></param> /// <returns></returns> public List <AnFile> GetFileList(string dir, Action <int, int> progress, Action <ErrorResult> error) { // 获取AnFile列表 var are = new AutoResetEvent(false); var files = new List <AnFile>(); // 测试连接状态 if (!TryConnect(error)) { return(null); } // 获取信息 var cmd = Command.Create(typeof(AnFile).Name); var info = new InfoHandler <AnFile>(Serial) { DataHandler = (infos, current, total) => { files.AddRange(infos); progress?.Invoke(current, total); }, // 处理退出事件 Exit = success => { are.Set(); } }; info.BeginGetInfo(cmd.ToString(), error); are.WaitOne(); if (files.Count == 0) { return(null); } // 解析Anfile var root = new List <AnFile>(); foreach (var file in files.FindAll(file => file.IsRoot)) { root.Add(file); AnFile.Prepare(file, files); } return(root); }