C# 从子线程中调用主线程的窗体 疑惑

bolv6666 2008-07-08 11:13:31
这样的,主窗体为Form1,新开了一个线程如下:
Thread History = new Thread(new ThreadStart(Ergodic));
History.Priority = ThreadPriority.Highest;
History.IsBackground = true;
History.Start();
其中Ergodic()
{
Wind_show ws = new Wind_show();
ws.ShowLidarWind_CAPPIbmp();
ws.MdiParent = this;//因为想把它弄成子窗体,但是一加上这句就报错:线程间操作无效:从不是创建控件"Form1"的线程访问它
ws.showDialog();
}

ws.MdiParent = this;因为这还是在主窗体下,this应该不会有错吧
如果想要子窗体,线程间该如何访问
...全文
781 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
angel6709 2009-12-03
  • 打赏
  • 举报
回复
委托,
CloudOfFly 2009-12-03
  • 打赏
  • 举报
回复
up
polarissky 2009-12-02
  • 打赏
  • 举报
回复
CheckForIllegalCrossThreadCalls = false; 不建议使用。
这样资源有时候产生死锁,不能及时释放。之前做过爬虫的程序,最先使用CheckForIllegalCrossThreadCalls = false;屏蔽错误,导致软件运行时候,那个内存啊 呼呼网上飚啊。后来用的delegate。
oneatree 2009-12-02
  • 打赏
  • 举报
回复
委托
S_T_F 2009-12-02
  • 打赏
  • 举报
回复
2楼可以
jbo126 2009-12-02
  • 打赏
  • 举报
回复
严重同意8,5楼的说法,不过本人更偏好于Invoke
yxlexing 2009-12-02
  • 打赏
  • 举报
回复
学习了
wufan110 2008-07-08
  • 打赏
  • 举报
回复
向进程传个参数Form试试
眼里进了砂 2008-07-08
  • 打赏
  • 举报
回复
加CheckForIllegalCrossThreadCalls = false或者写一个委托,然后this.invoke调用
痒痒挠儿 2008-07-08
  • 打赏
  • 举报
回复
建议试试Invoke方法,或者用backgroundWorker控件试试线程见的调用
xhan2000 2008-07-08
  • 打赏
  • 举报
回复
.net2.0的重大改变

需要换种写法,不仅是父窗体,甚至父窗体中的控件都不能在线程中直接操作
mercury_amy 2008-07-08
  • 打赏
  • 举报
回复
对了,以前有种办法,不用线程现实dialog,
而是用主画面显示dialog,在dialog里执行线程。

或者你做个主窗体和dialog在一起的控件,然后使用这个控件。


我现在没有这方面的sample了。但是第一个办法应该可以的。
松花皮蛋 2008-07-08
  • 打赏
  • 举报
回复
public Form_main()
{
InitializeComponent();
Form_main.CheckForIllegalCrossThreadCalls = false;
     }

线程要操作窗体有效必须设置CheckForIllegalCrossThreadCalls = false;
mercury_amy 2008-07-08
  • 打赏
  • 举报
回复
跟我以前的项目很像。我当时想要模仿web的dialog效果。
但是失败了。
最后用透明窗口覆盖主窗体,但还是有很多bug.
你试试timer控件吧。我是完全败给这个问题了。
marvelstack 2008-07-08
  • 打赏
  • 举报
回复
你这样做肯定不行的,需要通过 Control.Invoke或Control.BeginInvoke方法来进行处理,这里有两篇指导性的文章,你看了就清楚了。
通过多线程为基于 .NET 的应用程序实现响应迅速的用户
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/misMultithreading.mspx
为Windows应用创建简单的异步调用模式
http://www.microsoft.com/china/MSDN/library/architecture/AsynCallPattern.mspx

110,019

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧