我的程序启动后要去连接服务器,比较费时间。想在连接服务器之前启另外一个线程,显示出一个包含Label和ProcessBar的窗体。ProcessBar不需要主线程控制,但是主线程要控制Label的刷新,就是每当主线程处理到下一个步骤时,就在Label上提示当前执行到哪一步了。比如:开始连接服务器... -> 连接成功,开始取得数据... -> 取得成功,开始断开连接... -> 启动完成..... 然后关闭掉这个画面。能给一些例子吗,谢谢了
解决方案 »
- SQL查询
- DataGridView设置焦点问题,解决了就结贴在线等!
- propertyGrid使用的问题
- returnVaue什么意思?
- 如何用波形图显示网络流量(C#.NET实现)
- errorProvider1初级问题
- datagrid中显示数据的问题?
- 中国也应该有一个和codeproject一样的网站!!!!!!!!!!!!!!
- 江湖救急!!请问高手:ListBox中,如何用MultiColumn和AddRange添加多列。
- SQL查询一个月内每一个人的考勤记录同一个人的显示在当天的同一行中
- 进度条问题(因数据量巨大,所以速度比较慢,为了防止过多占用CPU使用率,我做了个假进度条,只让显示个模式对话框窗体,窗体载入个*.gif的图片)
- .net4.0新特性:动态添加属性
(1).把连接服务器的所有任务放到一个后台线程来完成。在Form_Load事件中启动这个线程并new一个显示你的消息和进度的窗体,并把主窗体先隐藏。
(2).在上面启动线程在需要一个新的处理前显示消息并更新ProcessBar的进度,因为是后台线程,一定可以刷新消息窗体。
(3).在上面线程结束时,关闭消息窗口并显示主窗体。
1,在主线程里,加入下面的代码:
myForm myfrm;
private void LableChanged(string strMsg)
{
if(myfrm == null)
{
myfrm = new myForm();
myfrm.GetChangeValue(strMsg);
myfrm.Show();
}
else
{
myfrm.GetChangeValue(strMsg);
}
}
在你每处理到下一个步骤的时候,就调用一次:
LableChanged("进行到第x步了")。2,在myForm类里,加入下面的代码:
public void GetChangeValue(string strMsg)
{
this.lable1.Text = strMsg;
}上面这几行代码,可以做到:当你每进行到下一步骤调用LableChanged("进行到第x步了")时,
你的消息窗体就会在lable上显示"进行到第x步了"。
和我现在处理的不一样。之前把连接服务器的操作都放在Main画面的UI线程里了,客户不满意,所以在原来基础上修改,想在Main画面另起一个线程显示一个Process画面。不知道我理解的对不对?
http://szitr.com/bbs/viewthread.php?tid=320&page=1&extra=#pid724
http://szitr.com/bbs/viewthread.php?tid=320&page=1&extra=#pid724