C#使用异步委托在另一个线程上更新窗体不能省略可选参数
Posted X2009
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#使用异步委托在另一个线程上更新窗体不能省略可选参数相关的知识,希望对你有一定的参考价值。
使用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#使用异步委托在另一个线程上更新窗体不能省略可选参数的主要内容,如果未能解决你的问题,请参考以下文章