码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-03-03 13:59:10      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:cli   test   form   art   src   结果   计数   label   update   

使用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#使用异步委托在另一个线程上更新窗体不能省略可选参数

标签:cli   test   form   art   src   结果   计数   label   update   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!