类型为“System.Reflection.TargetParameterCountException”的未处理异常

时间:2011-06-22 18:18:17

标签: .net c++

我创建了一个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);
        }

有人能说清楚我在做错了吗?谢谢!

1 个答案:

答案 0 :(得分:3)

ControlBoxDelegateMethod有两个参数(Label^int),但您只传递了一个(intwhich}。你错过了第一个参数。

所以,它应该是这样的:

local_long_textBox->BeginInvoke(gcnew ControlBoxDelegate(this,&Form1::ControlBoxDelegateMethod), your_label, which);