NewLife/XCoder

代码整理
大石头 authored at 2024-08-23 09:50:03
4b5b81c
Tree
1 Parent(s) c4958e5
Summary: 4 changed files with 252 additions and 260 deletions.
Modified +78 -80
Modified +1 -1
Modified +170 -176
Modified +3 -3
Modified +78 -80
diff --git a/XCoder/Engine/XConfig.cs b/XCoder/Engine/XConfig.cs
index fdff6ac..8555bc8 100644
--- a/XCoder/Engine/XConfig.cs
+++ b/XCoder/Engine/XConfig.cs
@@ -2,87 +2,85 @@
 using NewLife;
 using NewLife.Configuration;
 
-namespace XCoder
+namespace XCoder;
+
+[Config("XCoder")]
+public class XConfig : Config<XConfig>
 {
-    //[XmlConfigFile("Config\\XCoder.config")]
-    [Config("XCoder")]
-    public class XConfig : Config<XConfig>
+    #region 属性
+    /// <summary>标题</summary>
+    [Description("标题")]
+    public String Title { get; set; } = "";
+
+    /// <summary>宽度</summary>
+    [Description("宽度")]
+    public Int32 Width { get; set; }
+
+    /// <summary>高度</summary>
+    [Description("高度")]
+    public Int32 Height { get; set; }
+
+    /// <summary>顶部</summary>
+    [Description("顶部")]
+    public Int32 Top { get; set; }
+
+    /// <summary>左边</summary>
+    [Description("左边")]
+    public Int32 Left { get; set; }
+
+    /// <summary>扩展数据</summary>
+    [Description("扩展数据")]
+    public String Extend { get; set; } = "";
+
+    /// <summary>日志着色</summary>
+    [Description("日志着色")]
+    public Boolean ColorLog { get; set; } = true;
+
+    /// <summary>语音提示。默认true</summary>
+    [Description("语音提示。默认true")]
+    public Boolean SpeechTip { get; set; } = true;
+
+    /// <summary>证书</summary>
+    [Description("证书")]
+    public String Code { get; set; }
+
+    /// <summary>密钥</summary>
+    [Description("密钥")]
+    public String Secret { get; set; }
+
+    /// <summary>服务地址端口。默认为空,子网内自动发现</summary>
+    [Description("服务地址端口。默认为空,子网内自动发现")]
+    public String Server { get; set; } = "";
+
+    /// <summary>更新通道。默认Release</summary>
+    [Description("更新通道。默认Release")]
+    public String Channel { get; set; } = "Release";
+
+    /// <summary>更新服务器</summary>
+    [Description("更新服务器")]
+    public String UpdateServer { get; set; } = "";
+
+    /// <summary>最后更新时间</summary>
+    [DisplayName("最后更新时间")]
+    public DateTime LastUpdate { get; set; }
+
+    /// <summary>最后一个使用的工具</summary>
+    [DisplayName("最后一个使用的工具")]
+    public String LastTool { get; set; } = "";
+    #endregion
+
+    #region 加载/保存
+    public XConfig()
+    {
+    }
+
+    protected override void OnLoaded()
     {
-        #region 属性
-        /// <summary>标题</summary>
-        [Description("标题")]
-        public String Title { get; set; } = "";
-
-        /// <summary>宽度</summary>
-        [Description("宽度")]
-        public Int32 Width { get; set; }
-
-        /// <summary>高度</summary>
-        [Description("高度")]
-        public Int32 Height { get; set; }
-
-        /// <summary>顶部</summary>
-        [Description("顶部")]
-        public Int32 Top { get; set; }
-
-        /// <summary>左边</summary>
-        [Description("左边")]
-        public Int32 Left { get; set; }
-
-        /// <summary>扩展数据</summary>
-        [Description("扩展数据")]
-        public String Extend { get; set; } = "";
-
-        /// <summary>日志着色</summary>
-        [Description("日志着色")]
-        public Boolean ColorLog { get; set; } = true;
-
-        /// <summary>语音提示。默认true</summary>
-        [Description("语音提示。默认true")]
-        public Boolean SpeechTip { get; set; } = true;
-
-        /// <summary>证书</summary>
-        [Description("证书")]
-        public String Code { get; set; }
-
-        /// <summary>密钥</summary>
-        [Description("密钥")]
-        public String Secret { get; set; }
-
-        /// <summary>服务地址端口。默认为空,子网内自动发现</summary>
-        [Description("服务地址端口。默认为空,子网内自动发现")]
-        public String Server { get; set; } = "";
-
-        /// <summary>更新通道。默认Release</summary>
-        [Description("更新通道。默认Release")]
-        public String Channel { get; set; } = "Release";
-
-        /// <summary>更新服务器</summary>
-        [Description("更新服务器")]
-        public String UpdateServer { get; set; } = "";
-
-        /// <summary>最后更新时间</summary>
-        [DisplayName("最后更新时间")]
-        public DateTime LastUpdate { get; set; }
-
-        /// <summary>最后一个使用的工具</summary>
-        [DisplayName("最后一个使用的工具")]
-        public String LastTool { get; set; } = "";
-        #endregion
-
-        #region 加载/保存
-        public XConfig()
-        {
-        }
-
-        protected override void OnLoaded()
-        {
-            if (UpdateServer.IsNullOrEmpty() || UpdateServer.EqualIgnoreCase("http://x.newlifex.com/")) UpdateServer = NewLife.Setting.Current.PluginServer;
-
-            if (Server.IsNullOrEmpty()) Server = "http://s.newlifex.com:6600";
-
-            base.OnLoaded();
-        }
-        #endregion
+        if (UpdateServer.IsNullOrEmpty() || UpdateServer.EqualIgnoreCase("http://x.newlifex.com/")) UpdateServer = NewLife.Setting.Current.PluginServer;
+
+        if (Server.IsNullOrEmpty()) Server = "http://s.newlifex.com:6600";
+
+        base.OnLoaded();
     }
+    #endregion
 }
\ No newline at end of file
Modified +1 -1
diff --git a/XCoderLinux/Log/XTrace.cs b/XCoderLinux/Log/XTrace.cs
index 104d849..f3e16ec 100644
--- a/XCoderLinux/Log/XTrace.cs
+++ b/XCoderLinux/Log/XTrace.cs
@@ -15,7 +15,7 @@ namespace NewLife.Log
     /// <remarks>
     /// 该静态类包括写日志、写调用栈和Dump进程内存等调试功能。
     /// 
-    /// 默认写日志到文本文件,可通过修改<see cref="NewLife.Log"/>属性来增加日志输出方式。
+    /// 默认写日志到文本文件,可通过修改<see cref="Log"/>属性来增加日志输出方式。
     /// 对于控制台工程,可以直接通过UseConsole方法,把日志输出重定向为控制台输出,并且可以为不同线程使用不同颜色。
     /// </remarks>
     public static partial class XTrace2
Modified +170 -176
diff --git a/XCoderLinux/SharpApp.cs b/XCoderLinux/SharpApp.cs
index bbddba5..40df1e7 100644
--- a/XCoderLinux/SharpApp.cs
+++ b/XCoderLinux/SharpApp.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections;
-using System.Linq;
-using System.Reflection;
-using System.Threading.Tasks;
-using Gdk;
+using System.Reflection;
 using Gtk;
 using NewLife;
 using NewLife.Reflection;
@@ -12,228 +7,227 @@ using NewLife.Reflection;
 using XCom;
 using Window = Gtk.Window;
 
-namespace XCoder
-{
-    class SharpApp : Window
-    {
-        #region 窗口初始化
-        Task<Type[]> _load;
+namespace XCoder;
 
-        private readonly VBox _windowBox = new VBox(false, 1);
-        private readonly Menu _menuTool = new Menu();
-        private String _title = "新生命码神工具";
+class SharpApp : Window
+{
+    #region 窗口初始化
+    Task<Type[]> _load;
 
+    private readonly VBox _windowBox = new(false, 1);
+    private readonly Menu _menuTool = [];
+    private String _title = "新生命码神工具";
 
+    public SharpApp() : base("新生命码神工具")
+    {
+        _load = Task<Type[]>.Factory.StartNew(() => typeof(IXForm).GetAllSubclasses().ToArray());
 
-        public SharpApp() : base("新生命码神工具")
+        DeleteEvent += delegate
         {
-            _load = Task<Type[]>.Factory.StartNew(() => typeof(IXForm).GetAllSubclasses().ToArray());
+            SharpApp_Closing();
+            Application.Quit();
+        };
 
-            DeleteEvent += delegate
-            {
-                SharpApp_Closing();
-                Application.Quit();
-            };
+        Shown += SharpApp_Shown;
 
-            Shown += SharpApp_Shown;
-            ShowAll();// 触发Shown事件、递归显示所有控件,容器ShowAll后才能显示容器内所有控件
-        }
+        // 触发Shown事件、递归显示所有控件,容器ShowAll后才能显示容器内所有控件
+        //ShowAll();
+    }
 
-        private void SharpApp_Shown(System.Object sender, System.EventArgs e)
+    private void SharpApp_Shown(Object sender, EventArgs e)
+    {
+        var set = XConfig.Current;
+        if (set.Width > 0 || set.Height > 0)
         {
-            var set = XConfig.Current;
-            if (set.Width > 0 || set.Height > 0)
-            {
-                DefaultWidth = set.Width;
-                DefaultHeight = set.Height;
-                //SetDefaultSize(set.Width, set.Height);
-            }
+            DefaultWidth = set.Width;
+            DefaultHeight = set.Height;
+            //SetDefaultSize(set.Width, set.Height);
+        }
 
-            SetPosition(WindowPosition.Center);
+        SetPosition(WindowPosition.Center);
 
-            AddMenuButton();
+        AddMenuButton();
 
-            //AddMenu();
+        //AddMenu();
 
-            var frm = new FrmMain();
+        var frm = new FrmMain();
 
-            _windowBox.PackStart(frm, true, true, 0);
+        _windowBox.PackStart(frm, true, true, 0);
 
-            Add(_windowBox);
+        Add(_windowBox);
 
-            var asm = AssemblyX.Create(Assembly.GetExecutingAssembly());
-            if (set.Title.IsNullOrEmpty()) set.Title = asm.Title;
-            _title = Title = String.Format("{2} v{0} {1:HH:mm:ss}", asm.FileVersion, asm.Compile, set.Title);
+        var asm = AssemblyX.Create(Assembly.GetExecutingAssembly());
+        if (set.Title.IsNullOrEmpty()) set.Title = asm.Title;
+        _title = Title = String.Format("{2} v{0} {1:HH:mm:ss}", asm.FileVersion, asm.Compile, set.Title);
 
-            _load.ContinueWith(t => LoadForms(t.Result));
+        _load.ContinueWith(t => LoadForms(t.Result));
 
-            ShowAll();
-        }
+        ShowAll();
+    }
 
-        void LoadForms(Type[] ts)
+    void LoadForms(Type[] ts)
+    {
+        var name = XConfig.Current.LastTool + "";
+        foreach (var item in ts)
         {
-            var name = XConfig.Current.LastTool + "";
-            foreach (var item in ts)
+            if (item.FullName.EqualIgnoreCase(name))
             {
-                if (item.FullName.EqualIgnoreCase(name))
+                Application.Invoke((sender, args) =>
                 {
-                    Application.Invoke((sender, args) =>
-                    {
-                        CreateForm(item.CreateInstance() as Box);
-                        Title = _title + $"[{item.GetDisplayName() ?? item.FullName}]";
-                    });
-
-                    break;
-                }
-            }
+                    CreateForm(item.CreateInstance() as Box);
+                    Title = _title + $"[{item.GetDisplayName() ?? item.FullName}]";
+                });
 
-            Application.Invoke((sender, args) =>
-            {
-                foreach (var item in ts)
-                {
-                    var menuItem = new MenuItem { Label = item.GetDisplayName() ?? item.FullName };
-
-                    menuItem.Activated += (s, e) =>
-                    {
-                        var set = XConfig.Current;
-
-                        if (set.LastTool == item.FullName) return;
-                        var frm = item.CreateInstance() as Box;
-                        CreateForm(frm);
-                        Title = _title + $"[{menuItem.Label}]";
-                    };
-
-                    _menuTool.Append(menuItem);
-                }
-                _menuTool.ShowAll();
-            });
+                break;
+            }
         }
 
-        private void SharpApp_Closing()
+        Application.Invoke((sender, args) =>
         {
-            var set = XConfig.Current;
-            //var area = Screen.PrimaryScreen.WorkingArea;
-            //if (Left >= 0 && Top >= 0 && Width < area.Width - 60 && Height < area.Height - 60)
+            foreach (var item in ts)
             {
-                set.Width = AllocatedWidth;
-                set.Height = AllocatedHeight;
-                //set.Top = Top;
-                //set.Left = Left;
-                set.Save();
+                var menuItem = new MenuItem { Label = item.GetDisplayName() ?? item.FullName };
+
+                menuItem.Activated += (s, e) =>
+                {
+                    var set = XConfig.Current;
+
+                    if (set.LastTool == item.FullName) return;
+                    var frm = item.CreateInstance() as Box;
+                    CreateForm(frm);
+                    Title = _title + $"[{menuItem.Label}]";
+                };
+
+                _menuTool.Append(menuItem);
             }
-        }
-        #endregion
+            _menuTool.ShowAll();
+        });
+    }
 
-        #region 应用窗口
-        void CreateForm(Box frm)
+    private void SharpApp_Closing()
+    {
+        var set = XConfig.Current;
+        //var area = Screen.PrimaryScreen.WorkingArea;
+        //if (Left >= 0 && Top >= 0 && Width < area.Width - 60 && Height < area.Height - 60)
         {
-            var name = frm.GetType().FullName;
-            var cfg = XConfig.Current;
-            if (name != cfg.LastTool)
-            {
-                cfg.LastTool = name;
-                cfg.Save();
-            }
+            set.Width = AllocatedWidth;
+            set.Height = AllocatedHeight;
+            //set.Top = Top;
+            //set.Left = Left;
+            set.Save();
+        }
+    }
+    #endregion
 
-            //frm.MdiParent = this;
-            //frm.WindowState = FormWindowState.Maximized;
-            if (_windowBox.Children.Length > 1)
-            {
-                _windowBox.Remove(_windowBox.Children[1]);
-            }
-            _windowBox.Add(frm);
-            _windowBox.ShowAll();
-            //frm.ShowAll();
+    #region 应用窗口
+    void CreateForm(Box frm)
+    {
+        var name = frm.GetType().FullName;
+        var cfg = XConfig.Current;
+        if (name != cfg.LastTool)
+        {
+            cfg.LastTool = name;
+            cfg.Save();
         }
-        #endregion
 
-        #region 菜单
-        void AddMenu()
+        //frm.MdiParent = this;
+        //frm.WindowState = FormWindowState.Maximized;
+        if (_windowBox.Children.Length > 1)
         {
-            var mb = new MenuBar();
+            _windowBox.Remove(_windowBox.Children[1]);
+        }
+        _windowBox.Add(frm);
+        _windowBox.ShowAll();
+        //frm.ShowAll();
+    }
+    #endregion
 
-            var filemenu = new Menu();
-            var file = new MenuItem("文件")
-            {
-                Submenu = filemenu
-            };
+    #region 菜单
+    void AddMenu()
+    {
+        var mb = new MenuBar();
 
-            var agr = new AccelGroup();
-            AddAccelGroup(agr);
+        var filemenu = new Menu();
+        var file = new MenuItem("文件")
+        {
+            Submenu = filemenu
+        };
 
-            var newi = new ImageMenuItem(Stock.New, agr);
-            newi.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
-            filemenu.Append(newi);
+        var agr = new AccelGroup();
+        AddAccelGroup(agr);
 
-            var open = new ImageMenuItem(Stock.Open, agr);
-            open.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
-            filemenu.Append(open);
+        var newi = new ImageMenuItem(Stock.New, agr);
+        newi.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
+        filemenu.Append(newi);
 
-            var sep = new SeparatorMenuItem();
-            filemenu.Append(sep);
+        var open = new ImageMenuItem(Stock.Open, agr);
+        open.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.n, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
+        filemenu.Append(open);
 
-            var exit = new ImageMenuItem(Stock.Quit, agr);
-            exit.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.q, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
+        var sep = new SeparatorMenuItem();
+        filemenu.Append(sep);
 
-            //var exit = new MenuItem("退出");
-            exit.Activated += (sender, args) =>
-            {
-                Application.Quit();
-            };
-            filemenu.Append(exit);
+        var exit = new ImageMenuItem(Stock.Quit, agr);
+        exit.AddAccelerator("activate", agr, new AccelKey(Gdk.Key.q, Gdk.ModifierType.ControlMask, AccelFlags.Visible));
 
-            mb.Append(file);
+        //var exit = new MenuItem("退出");
+        exit.Activated += (sender, args) =>
+        {
+            Application.Quit();
+        };
+        filemenu.Append(exit);
 
-            //var _windowBox = new VBox(false, 2);
-            _windowBox.PackStart(mb, false, false, 0);
-            //_windowBox.PackStart(new Label("2333"), false, false, 0);
+        mb.Append(file);
 
-            //Add(_windowBox);
-        }
+        //var _windowBox = new VBox(false, 2);
+        _windowBox.PackStart(mb, false, false, 0);
+        //_windowBox.PackStart(new Label("2333"), false, false, 0);
 
-        void AddMenuButton()
-        {
-            var mb = new MenuBar();
+        //Add(_windowBox);
+    }
 
-            mb.Append(GetMenuTool());
-            mb.Append(GetMenuHelp());
+    void AddMenuButton()
+    {
+        var mb = new MenuBar();
 
-            _windowBox.PackStart(mb, false, false, 0);
-        }
+        mb.Append(GetMenuTool());
+        mb.Append(GetMenuHelp());
 
-        /// <summary>
-        /// 添加帮助菜单
-        /// </summary>
-        /// <returns></returns>
-        MenuItem GetMenuHelp()
+        _windowBox.PackStart(mb, false, false, 0);
+    }
+
+    /// <summary>
+    /// 添加帮助菜单
+    /// </summary>
+    /// <returns></returns>
+    MenuItem GetMenuHelp()
+    {
+        var menu = new Menu();
+        var menuItem = new MenuItem("帮助")
         {
-            var menu = new Menu();
-            var menuItem = new MenuItem("帮助")
-            {
-                Submenu = menu
-            };
+            Submenu = menu
+        };
 
-            var inspector = new MenuItem("切换开发工具");
-            inspector.Activated += (s, e) =>  InteractiveDebugging = true;
-            menu.Append(inspector);
+        var inspector = new MenuItem("切换开发工具");
+        inspector.Activated += (s, e) => InteractiveDebugging = true;
+        menu.Append(inspector);
 
-            return menuItem;
-        }
+        return menuItem;
+    }
 
-        /// <summary>
-        /// 添加工具菜单
-        /// </summary>
-        /// <returns></returns>
-        MenuItem GetMenuTool()
+    /// <summary>
+    /// 添加工具菜单
+    /// </summary>
+    /// <returns></returns>
+    MenuItem GetMenuTool()
+    {
+        var menu = _menuTool;
+        var menuItem = new MenuItem("工具")
         {
-            var menu = _menuTool;
-            var menuItem = new MenuItem("工具")
-            {
-                Submenu = menu
-            };
-            
-            return menuItem;
-        }
-        #endregion
+            Submenu = menu
+        };
+
+        return menuItem;
     }
+    #endregion
 }
Modified +3 -3
diff --git a/XCoderLinux/XNet/FrmMain.cs b/XCoderLinux/XNet/FrmMain.cs
index 77b69f3..90a320b 100644
--- a/XCoderLinux/XNet/FrmMain.cs
+++ b/XCoderLinux/XNet/FrmMain.cs
@@ -35,7 +35,7 @@ namespace XNet
         #region 窗体
         static FrmMain()
         {
-            _task = Task.Factory.StartNew(() => GetNetServers());
+            _task = TaskEx.Factory.StartNew(() => GetNetServers());
         }
 
         public FrmMain() : base(Orientation.Horizontal, 2)
@@ -355,7 +355,7 @@ namespace XNet
         //    }
         //}
 
-        private Task _Send;
+        private TaskEx _Send;
         private void btnSend_Click(Object sender, EventArgs e)
         {
             var str = txtSend.Buffer.Text;
@@ -407,7 +407,7 @@ namespace XNet
 
                         list.Add(client);
                     }
-                    var ts = new List<Task>();
+                    var ts = new List<TaskEx>();
                     for (var i = 0; i < ths; i++)
                     {
                         var task = list[i].SendConcurrency(pk, count, sleep);