首页 > 编程语言 > 详细

C#使用异步委托在另一个线程上更新窗体不能省略可选参数

时间:2018-03-03 13:53:49      阅读:304      评论:0      收藏:0      [点我收藏+]

使用button1更新label1:

        private delegate void UpdateFormInvoke(string a, string b = "B");
        private void UpdateForm(string a, string b = "B")
        {
            label1.Text = a + " - " + b;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread th = new Thread(Test);
            th.Start();
        }

        void Test()
        {
            UpdateFormInvoke uli = new UpdateFormInvoke(UpdateForm);
            this.BeginInvoke(uli, new object[] { "A" });
        }

 

参数计数不匹配异常:

 技术分享图片

 

修改代码1:

        private delegate void UpdateFormInvoke(string a, string b = "B");
        private void UpdateForm(string a, string b)
        {
            label1.Text = a + " - " + b;
        }

 

修改代码2:

        private delegate void UpdateFormInvoke(string a, string b);
        private void UpdateForm(string a, string b = "B")
        {
            label1.Text = a + " - " + b;
        }

 

结果出现相同的错误

 

修改代码3:

        void Test()
        {
            UpdateFormInvoke uli = new UpdateFormInvoke(UpdateForm);
            this.BeginInvoke(uli, new object[] { "A", "B" });
        }

 

不省略可选参数,无异常。

 

C#使用异步委托在另一个线程上更新窗体不能省略可选参数

原文:https://www.cnblogs.com/x2009/p/8496332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!