我有Delegate
a
:
public delegate void doLog( String value , RichTextBox lger ) ;
public void doLg(String value, RichTextBox lger)
{
lger.AppendText(value);
}
doLog a = new doLog(doLg);
我在Invoke
通话中使用了该委托人:
_textBox.Invoke(a, new Object[] { "aaaa", _textBox });
如何使用lambda表达式简化所有操作?
答案 0 :(得分:1)
我认为这是一个简单的班轮
_textBox.Invoke(new Action(() => { doLog("aaaa", _textBox); }));
(之所以起作用是因为Action只是委托)
答案 1 :(得分:0)
如果可以做的更好,可以使用Action
:
Action<string, RichTextBox> a = (value, lger) => { };
_textBox.Invoke(a, new object[] { "aaaa", _textBox });
答案 2 :(得分:0)
结合以上两个答案,我认为这是最好的折衷方案:
textBox1.Invoke(new Action(() => { /* your code here */ }), new object[] { "a", "b" });
修改;从这个question
借来的钱编辑2 ;带有参数的示例:
textBox1.Invoke(new Action<string, RichTextBox>((a, b) => {}), new object[] {"a", new RichTextBox() });