
winform 下面情况怎么让窗口先显示出来?不用多线程
frmmain窗体里有一段代码----------------------------------frmsubfs=newfrmsub();fs.ShowDialog()...
frmmain窗体里有一段代码
----------------------------------
frmsub fs = new frmsub();
fs.ShowDialog();
----------------------------------
在frmsub子窗体里,frmsub_Load里有一个自定义抓取某网页页面的函数,执行起来可能会慢一点。在执行上面代码时,就会出现这样的情况:“子窗体不出来,等抓取函数执行完抓完数据后,子窗体才显示~”。如果我不用多线程,或者设一个timer让抓取函数稍后执行,我想要的子窗体先显示的效果如何实现? 展开
----------------------------------
frmsub fs = new frmsub();
fs.ShowDialog();
----------------------------------
在frmsub子窗体里,frmsub_Load里有一个自定义抓取某网页页面的函数,执行起来可能会慢一点。在执行上面代码时,就会出现这样的情况:“子窗体不出来,等抓取函数执行完抓完数据后,子窗体才显示~”。如果我不用多线程,或者设一个timer让抓取函数稍后执行,我想要的子窗体先显示的效果如何实现? 展开
展开全部
那就把那个函数写在窗体的Shown事件里面呗。不过估计届时可能出现窗体卡住的情况。
建议用
System.Timers.Timer timer = new System.Timers.Timer(1);
这个TIMER是多线程的timer,不会卡。然后在窗体构造函数中添加
CheckForIllegalCrossThreadCalls = false;
关闭线程安全检查。
然后手动绑定timer的事件:
timer.AutoReset = false;
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
在timer的事件里写你的函数
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
}
建议用
System.Timers.Timer timer = new System.Timers.Timer(1);
这个TIMER是多线程的timer,不会卡。然后在窗体构造函数中添加
CheckForIllegalCrossThreadCalls = false;
关闭线程安全检查。
然后手动绑定timer的事件:
timer.AutoReset = false;
timer.Enabled = true;
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
在timer的事件里写你的函数
void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询