我创建了一个BeginInvoke,因此我可以从非UI线程写入文本框。线程A调用一个在线程A的上下文中运行testFunc的委托。然后testFunc执行一个BeginInvoke,它运行空函数ControlBoxDelegateMethod。如果删除了BeginInvoke行,则程序将运行。但如果留下,我得到以下例外:
mscorlib.dll中出现未处理的“System.Reflection.TargetParameterCountException”类型异常附加信息:参数计数不匹配。
private:
//delegate void ControlBoxDelegate(Label^ myControl,int whichControl);
void ControlBoxDelegateMethod(Label^ myControl,int whichControl)
{
// myControl->Text = "Test!!!!!!!";
}
public:
void testFunc()
{
int which = 3;
local_long_textBox->BeginInvoke(gcnew ControlBoxDelegate
(this,&Form1::ControlBoxDelegateMethod),which);
}
有人能说清楚我在做错了吗?谢谢!
答案 0 :(得分:3)
ControlBoxDelegateMethod
有两个参数(Label^
和int
),但您只传递了一个(int
名which
}。你错过了第一个参数。
所以,它应该是这样的:
local_long_textBox->BeginInvoke(gcnew ControlBoxDelegate(this,&Form1::ControlBoxDelegateMethod), your_label, which);