急,C#中多线程中窗体的操作
项目中遇到一个问题,一直没解决,球牛人[code=C#][/code]帮助。
在主窗口线程创建一窗口,并把其隐藏,然都的等待消息,在另外线程中把该窗口显示出,这怎样实现啊,有做过这方面的给点指点,告诉我从那方向下手查资料也行,我都查了一天了。。。
首先在窗体中重新定义了show和hide方法
public void ThreadShow() { if (this.InvokeRequired) { MethodInvoker invoker = new MethodInvoker(this.Show); this.Invoke(invoker, null); } else { this.Show(); } } public void ThreadHide() { if (this.InvokeRequired) { MethodInvoker invoker = new MethodInvoker(this.Hide); this.Invoke(invoker, null); } else { this.Hide(); } }
private void FormMain_Load(object sender, EventArgs e){ fingerIm = new FingerIm(); fingerIm.ThreadShow(); fingerIm.ThreadHide();}在另一线程中显示该窗体
fingerIm.ThreadShow();
public void Show(){ if (InvokeRequired) { BegionInvoke(new Action(Show));}else{ form.Show();}}
[解决办法]
begininvoke啊 begininvoke 我楼上用的就是,提醒过的。。。
[解决办法]
[解决办法]
你这是属于子线程操作UI的范围,
建立你google一下跨线程操作控件的相关内容,会得到很多这方面的知识点,总的来说
.net实现这种操作,多数都采用下面这种方法,当然,还有很多其它的方法:
public void ShowMsgForm()
{
if (InvokeRequired)
{
BegionInvoke(new Action(Show));
}else
{
form.Show();
}
}