System.Windows.Forms.dll中发生System.Reflection.TargetParameterCountException

时间:2013-08-20 09:03:50

标签: visual-c++ c++-cli invoke

这对我来说似乎很奇怪。所有定义都匹配,但似乎调用带有输入array<Object^>^的函数存在问题。这是我的简要代码:

void WriteCOMPortPannel(array< String ^ >^ ){ \\ Do something};
delegate void WriteCOMPortDelegate(array< String ^ >^ );

array <String^ > ^COM_PORTS = this -> SerialPort ->GetPortNames();          
this->Invoke (gcnew WriteCOMPortDelegate(this, &MainForm::WriteCOMPortPannel), COM_PORTS);

在C#中,解决方案是:

this->Invoke (MyDeligate , New Object() COM_PORTS);.

C ++ \ CLI怎么样?是否有任何类型不匹配?

1 个答案:

答案 0 :(得分:1)

我猜C ++ / CLI Invoke错误地将array< String^ >^误认为它希望保留参数列表的array< Object^ >^

您应该尝试将array< String^ >^包裹在array< Object^ >^内。

array <String^ > ^COM_PORTS = this -> SerialPort ->GetPortNames();          
array <Object^ > ^parameters = gcnew array <Object^ >(1);
parameters[0] = COM_PORTS;
this->Invoke (gcnew WriteCOMPortDelegate(this, &MainForm::WriteCOMPortPannel), parameters);