日期:2014-05-17  浏览次数:20974 次

winfrom线程问题
例如:我在界面上点击一个按钮,然后过了10秒左右才有数据输出,在这段时间里,程序是假死的,我想加入一个提示,在这段时间里面提示:“数据加载中。。。请稍候”的字样。请问高手怎么做啊?

------解决方案--------------------
http://developer.51cto.com/art/200908/144372.htm
这个是具体的实例代码 自己看吧 里面注释也很清楚
------解决方案--------------------
多线程..


Thread th;

From1()
{

th=new thread(new threadStart(DataPro));
th.IsBackground=true;
th.start();
}

private void DataPro()
{
//数据处理
}


------解决方案--------------------
1.加一个Label,挡在最前面,先show出来这个label,等加载完再隐藏这个label。
2.加载数据时,隐藏主窗体,弹出一个加载中的提示窗体。

1.方法弊端界面假死,导致即时这么做了,有其他程序经过这个界面都会导致界面花掉。
2.比较复杂

还有第三个方法 Invoke ,详情google
------解决方案--------------------
用线程或线程池,

看看这篇:
http://topic.csdn.net/u/20120805/01/58230777-2767-4337-a8f8-a3725e7db4b1.html
------解决方案--------------------
void button1_Click(object sender,EventArgs e)
{
     var ot=button1.Text;
     new Action(DoWhateverYouWant).BeginInvoke(ar=>button1.Text=ot,null);
     button1.Text="数据加载中。。。请稍候";
}

void DoWhateverYouWant()
{
    //todo: 你的运行时间挺长的方法
}