我试图找到解决这个问题的方法,但是我没有发现或不知道,我是C#的新手
我找到了很多讨论(调用)的解决方案,但是我不知道如何在代码上修复它们,无论find只是标签或文本框的解决方案,如果可能的话,都可以解决问题
“ System.InvalidOperationException:'跨线程操作无效:Control”是从不是在其上创建线程的线程访问的。'”
for (int i = 0; i <= len - 1; i++)
{
if (i % 3 == 0)
{
split = proxy[proxy_counter].Split(':');
num.Rows.Add(numlist[i], 0, 0, split[0], split[1], split[2], split[3]);
proxy_counter++;
}
else
{
num.Rows.Add(numlist[i], 0, 0, split[0], split[1], split[2], split[3]);
}
}
答案 0 :(得分:0)
问题出在MessageBox.Show
上。您不能从后台线程更改UI。为此,您需要Invoke
(如您所说)从主线程中MessageBox.Show
。
将您的MessageBox行更改为(假设那段代码在Windows窗体中):
InvokeIfRequired(() =>
{
MessageBox.Show("You Enter Less Than 6 Numbers!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
});
private void InvokeIfRequired(Action method)
{
if (this.InvokeRequired)
{
Invoke(method);
}
}