0

我觉得很奇怪。所有定义都匹配,但使用 input 调用函数似乎存在问题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 呢?有没有类型不匹配?

4

1 回答 1

1

我猜 C++/CLIInvokearray< 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);
于 2013-08-20T09:25:52.287 回答