这里是我的代码的情况下,跨线程操作控制
在主线程创建面板(S)(基于一些配置),然后在基于文件类型(下一步如视频, PPT,图像...)我创建适当的控件(动态)以显示在窗体上。
控件的创建将在单独的线程中完成(针对每个文件)。创建控件后,当我尝试将该控件添加到面板(主线程中创建的面板)时,它会引发错误,如cross thread violation, control was accessed from one thread other that it was created
。
有人可以帮我这方面吗?
在这种情况下,一切 - 创建面板和控件 - 将是动态的。没有什么会是静态的。
我尝试了一些在StackOverflow上找到的文章(例如,control.BeginInvoke()
..等),但无法解决我的问题。
Benjol,是的你是正确的,Control.invoke将是答案,但对我来说,我需要添加一个新的控制面板。但是这种方法会更新表单上已存在的控件。让我知道,有没有其他的方式来处理control.invoke()。 – 2010-09-08 12:59:40