• 从另一个线程更新GUI制作容易


    介绍 我发现,即使是在后台线程中完成的简单操作需要更新接口,也需要强制这些接口调用返回到相同的线程中,因为接口在… 经过一些研究,我发现这是用Invoke方法完成的。起初,我创建了数百个委托/函数来处理每个控件的更新,但现在,虽然我发布的这个解决方案可以更好,但至少对我来说,它节省了不少时间,所以希望它能帮助其他人…… 基本上,我们下面有一个静态类(thread .cs),它有一些委托,比如SetText(Control, string),可以让你用一些文本设置任何控件的文本。下面的例子是非常基本的,但是在thread .cs中还有很多其他的例子,比如在列表视图中添加条目,改变复选框的复选状态,等等。看看吧。 下面是一个更改控件文本属性的基本示例。 使用 隐藏,复制Code

    ThreadSafe.SetText(this.whateverControl, "text to change");

    并不简单。 委托 隐藏,复制Code

    public delegate void SetTextDelegate(System.Windows.Forms.Control ctrl, string text);

    这定义了SetText方法的签名。 该方法 隐藏,复制Code

    //generic system.windows.forms.control
    
    public static void SetText(System.Windows.Forms.Control ctrl, string text)
    {
    
        if (ctrl.InvokeRequired)
        {
            object[] params_list = new object[] { ctrl, text };
            ctrl.Invoke(new SetTextDelegate(SetText), params_list);
        }
        else
        {
            ctrl.Text = text;
        }
    }

    还有其他控件、列表视图、按钮、组合框等的类和继承类,这会节省你编写线程安全GUI代码的时间。希望这对某些人有所帮助。如果有或者需要帮助,请留下评论! 下载助手类 连结至原稿 本文转载于:http://www.diyabc.com/frontweb/news8503.html

  • 相关阅读:
    315,谁来保护手游开发者的利益
    微信小程序之提高应用速度小技巧
    Python-爬虫-Beautifulsoup解析
    Python-爬虫-requests
    Python-form表单标签
    设计模式のTemplatePattern(模板模式)----行为模式
    链接
    python入门007
    007作业
    005作业
  • 原文地址:https://www.cnblogs.com/Dincat/p/13468086.html
Copyright © 2020-2023  润新知