我有一个windows.form.userControl类,在运行时我想动态添加一些链接标签。当我在Load方法内应用这段代码片段时,它完美地工作。
for (int i = 0; i < 10; i++)
{
linkLabel = new System.Windows.Forms.LinkLabel();
linkLabel.Name = i.ToString();
linkLabel.Text = i.ToString();
linkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(linkLabel_LinkClicked);
this.Controls.Add(linkLabel);
linkLabel.Top = top;
top += 30;
}
但是,当我将这段代码片段移动到 backgroundworker 的 doWork 方法中时,它会在这一行出现与跨线程问题相关的无效操作异常:-this.Controls.Add(linkLabel);
我如何使其成为线程安全的操作? 我是 C# 新手,我使用的是 C# 4.0 和 VS 2010。提前致谢。
invoke
,因为你的示例会导致十次对Control.Invoke
的调用,而不是一次。 - Florian Greinacher