Вы не можете получить доступ к элементам графического интерфейса в потоке без графического интерфейса.Вам нужно будет определить, требуется ли вызов для потока GUI.Например (вот что я сделал ранее):
public delegate void SetEnabledStateCallBack(Control control, bool enabled);
public static void SetEnabledState(Control control, bool enabled)
{
if (control.InvokeRequired)
{
SetEnabledStateCallBack d = new SetEnabledStateCallBack(SetEnabledState);
control.Invoke(d, new object[] { control, enabled });
}
else
{
control.Enabled = enabled;
}
}
Или
public delegate void AddListViewItemCallBack(ListView control, ListViewItem item);
public static void AddListViewItem(ListView control, ListViewItem item)
{
if (control.InvokeRequired)
{
AddListViewItemCallBack d = new AddListViewItemCallBack(AddListViewItem);
control.Invoke(d, new object[] { control, item });
}
else
{
control.Items.Add(item);
}
}
Затем вы можете установить свойство enabled (из моего первого примера), используя ClassName.SetEnabledState(this, true);
.