Я использую поток для выполнения некоторого процесса на машине. В конце концов, о прогрессе сообщается в другом потоке. Чтобы обновить графический интерфейс со статусом процесса, я использую такой делегат:
public delegate void UpdateProgressDelegate(string description, int scriptnumber);
public void UpdateProgress(string description, int scriptnumber) {
if (treeView.InvokeRequired) {
treeView.Invoke(new UpdateProgressDelegate(UpdateProgress), description, scriptnumber);
return;
}
// Update the treeview
}
И для вызова этого делегата я использую:
form.UpdateProgress("Ready", 3);
Когда вызывается Invoke, я получаю исключение TargetParameterCountException: несоответствие количества параметров. Я подумал, что смогу исправить это, поместив параметры string и int в один объект, например:
public delegate void UpdateProgressDelegate(object[] updateinfo);
public void UpdateProgress(object[] updateinfo) {
string description = (string) updateinfo[0];
int scriptnumber = (int) updateinfo[1];
if (treeView.InvokeRequired) {
treeView.Invoke(new UpdateProgressDelegate(UpdateProgress), new object[] { description, scriptnumber });
return;
}
// Update the treeview
}
И чтобы назвать это, я использую:
form.UpdateProgress(new object[] {"Ready", 3});
Но и это не работает. Я продолжаю получать одно и то же исключение TargetParameterCountException. Любые идеи, как я могу это исправить? Заранее спасибо!