日期:2014-05-20  浏览次数:20834 次

[急!!!]弹出的等待对话框如何实现?
C#想实现下面的功能:
在处理一个较复杂的操作的时候出现弹出的等待对话框,当处理完成后该对话框自动关闭。
要想实现该如何处理?

------解决方案--------------------
可以用异步来实现,在开始的时候用BeginInvoke,返回一个IAsyncResult类型的值,检测这个值的.IsCompleted属性如果为True则关闭对话框,并调用EndInvoke就行了.
------解决方案--------------------
用backGroundWorker组件,异步运行任务,在结束事件里关闭对话筐
------解决方案--------------------
可以用异步来实现,在开始的时候用BeginInvoke,返回一个IAsyncResult类型的值,检测这个值的.IsCompleted属性如果为True则关闭对话框,并调用EndInvoke就行了.

------解决方案--------------------
backGroundWorker是2005里面的
你用的是什么版本??

如果在03里面需要自己写
------解决方案--------------------
backGroundWorker是.netfamework2.0里的,你用1.0就用平民百姓的方法好了
------解决方案--------------------
只要你会用BeginInvoke方法了就好说了.
------解决方案--------------------
你可以参考下如下的代码,你应定义一个委托,然后调用委托的BeginInvoke方法:

//运行时间较长的函数的委托定义
private delegate object someMethodDelegate(object someArg);

//运行时间较长的函数
private object someLongtimeMethod(object someArg)
{
//执行较长的操作
return someArg;
}

private void button1_Click(object sender, EventArgs e)
{
//为调用函数而声明委托的实例
someMethodDelegate sd = new someMethodDelegate(this.someLongtimeMethod);
//开始调用函数,可以带参数
IAsyncResult ir = sd.BeginInvoke( "测试参数 ", null, null);
//显示等待的窗口
Form fWait = new Form();
fWait.Show(this);
//刷新这个等待的窗口
Application.DoEvents();
//循环检测是否完成了异步的操作
while (true)
{
if (ir.IsCompleted)
{
//完成了操作则关闭窗口
fWait.Close();
break;
}
}
//取函数的返回值
object retValue = sd.EndInvoke(ir);
System.Console.WriteLine(retValue);
}