我在運行異步的C++ .NET窗體應用程序中有背景工作。在這個backgroundworker的DoWork函數中,我想將行添加到datagridview中,但是我無法真正弄清楚如何使用BeginInvoke做到這一點,因爲我的代碼似乎沒有工作。使用BeginInvoke時參數計數不匹配異常
的代碼我有
delegate void invokeDelegate(array<String^>^row);
....
In the DoWork of the backgroundworker
....
array<String^>^row = gcnew array<String^>{"Test", "Test", "Test"};
if(ovlgrid->InvokeRequired)
ovlgrid->BeginInvoke(gcnew invokeDelegate(this, &Form1::AddRow), row);
....
void AddRow(array<String^>^row)
{
ovlgrid->Rows->Add(row);
}
我得到的錯誤是:
的類型 'System.Reflection.TargetParameterCountException' 未處理的異常出現在mscorlib.dll的
附加信息:參數計數不匹配。
當我改變代碼不會穿它只是工作的任何參數,代碼比變爲:
delegate void invokeDelegate();
...
In the DoWork function
...
if(ovlgrid->InvokeRequired)
ovlgrid->BeginInvoke(gcnew invokeDelegate(this, &Form1::AddRow));
...
void AddRow()
{
array<String^>^row = gcnew array<String^>{"test","test2","test3"};
ovlgrid->Rows->Add(row);
}
的問題是,雖然我想傳遞的參數。 我想知道我在做什麼錯誤導致parametercountexception和如何解決這個問題?
謝謝,你的解決方案適用於我的問題。我在考慮'... array