zoukankan      html  css  js  c++  java
  • 从另一个线程更新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

  • 相关阅读:
    服务器安装宝塔面板
    CentOS7操作SSH/SSHD服务(查看/启动/重启/自启)
    CentOS服务器升级Linux版本
    阿里云云服务器漏洞修复
    Linux服务器安装Docker
    服务器安装Nginx
    服务器端简单Demo
    实现博客内容折叠
    [转]珍惜时间,做好规划——致大学过半的你们
    【LeetCode】9. 回文数
  • 原文地址:https://www.cnblogs.com/Dincat/p/13468086.html
Copyright © 2011-2022 走看看