winform 下面情况怎么让窗口先显示出来?不用多线程

frmmain窗体里有一段代码----------------------------------frmsubfs=newfrmsub();fs.ShowDialog()... frmmain窗体里有一段代码
----------------------------------
frmsub fs = new frmsub();
fs.ShowDialog();
----------------------------------
在frmsub子窗体里,frmsub_Load里有一个自定义抓取某网页页面的函数,执行起来可能会慢一点。在执行上面代码时,就会出现这样的情况:“子窗体不出来,等抓取函数执行完抓完数据后,子窗体才显示~”。如果我不用多线程,或者设一个timer让抓取函数稍后执行,我想要的子窗体先显示的效果如何实现?
展开
 我来答
ahao1001
2011-02-28 · TA获得超过2270个赞
知道小有建树答主
回答量:396
采纳率:0%
帮助的人:373万
展开全部
那就把那个函数写在窗体的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)
{

}
lcg1986
2011-02-28 · TA获得超过3374个赞
知道大有可为答主
回答量:1858
采纳率:90%
帮助的人:1655万
展开全部
用timer可以,但是timer其实也是个线程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式