美文网首页
C# 多线程

C# 多线程

作者: 成熟的青菜 | 来源:发表于2020-04-10 11:00 被阅读0次

    多线程怎么访问Ui线程 git地址下载代码

    
            //下面总结来自 {https://blog.csdn.net/Fanbin168/article/details/39178427}
            // Action action //action是一个没有返回值,也没有参数的委托,相当于public delegate void action(),但还它也可以有带参数的,
            // Action<string> action  //action是有一个带参数,没有返回值的委托,相当于public delegate void action(string str); 
            // Func<string, int> func //func是一个带参数而且带返回值的委托,尖括号里的最后一个参数就是委托的返回值类型,它相当于public delegate int func(string str);
            // Func<int> func; //当这个func委托的尖括号里还有一个参数的时候,其实这个参数是委托的返回值类型,它相当于public delegate int func();
    
            private void BtnOk_Click(object sender, EventArgs e)
            {
                //基础知识
              
    
                //action用法
                Form2 a2 = new Form2((x, ri) => { label1.Text = ri; });
                a2.ShowDialog();
    
                return;
                //多线程访问其他UI
                Thread td = new Thread(UpdateLabel2);
                td.Start("更新Label");
    
                
    
            }
    
       public delegate string setlab(string a);
            public setlab setlabDelP { get; set; }
            private void UpdateLabel2(object str)
            {
                if (label1.InvokeRequired)
                {
                    // 当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它
                    //Action<string> actionDelegate = (x) => { this.label1.Text = x.ToString(); };
                    // 或者
                    Action<string> actionDelegate = delegate (string txt) { this.label1.Text = txt; };
                    this.label1.Invoke(actionDelegate, str);
                    //第二种
                    setlabDelP = delegate (string txt) { return this.label1.Text = txt; };
                    this.label1.Invoke(setlabDelP, str + "第二种");
    
    
                }
                else
                {
                    this.label1.Text = str.ToString();
                }
            }
    
    

    相关文章

      网友评论

          本文标题:C# 多线程

          本文链接:https://www.haomeiwen.com/subject/ljrqmhtx.html