我正在写一个网络销售的软件.在处理远程数据库查询和网络延时的方面一直有好的解决办法!最近看到一款软件是这样解决的(Vb).它的程序在所有数据库查询的时候都弹出一个模态窗口,有个来回移动的小条(类似xp的启动界面的那个).数据库操作执行完,模态窗口自动消逝.我觉得这种方法不错,不过我自己做过很多测试,都没有成功,我觉得要用到多线程,或委托异步调用可是我就是作不出这个效果.各位帮帮忙,说说该怎么做!
解决方案 »
- 调用 Dll "试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
- 请教各位大侠关于C#打印控件的问题。
- 如何学习.NET以及C#
- 求一分解字符串的正则表达式
- 求C#开发C/S版程序的好建议
- 请问如何用C#做一个有窗口界面的win服务程序!因为一般的win服务没有界面的
- 怎样加载ParseHTML
- 在线求助:如何在用户控件代码中调用主窗体的事件
- C# 关于Actice X 控件的注册问题,求高手解答
- winform如何得到不相干的另外一个窗体的句柄?
- C# 中如何更改Form的BackgroundImage属性。(创建的是非规则窗口)请高手指教。
- C++的类型"unsigned char"转成C#的类型?
http://support.microsoft.com/?id=815804
执行完成后就关闭它, 如: frmS frm = New frmS;
frm.Show(); EXEC.....//执行方法 frm.Close();
但webform的C#下我会
frm.Refresh();//刷新一下
public IAsyncResult AsyncResult
{
set
{
m_IAsyncResult=value;
}
}
可以再添加一个用来检测这个m_IAsyncResult是否完成的Timer,如果m_IAsyncResult.IsCompleted为True则关闭这个窗体如下:
private void TimerProcess_Tick(object sender, System.EventArgs e)
{
if (this.m_IAsyncResult!=null)
{
if (this.m_IAsyncResult.IsCompleted)
{
this.DialogResult=DialogResult.OK;
}
}
}
这样这个窗体就做好了,主要在于调用这个窗体的地方怎么来写,可以参见如下的使用:在使用以上窗体的地方先声明一个代理如:
private delegate object TestAsyncDeleagte();在要使用的地方声明这个代理的实例如:
//SomeClass.Method为执行时间很长的方法
TestAsyncDeleagte logDel = new TestAsyncDeleagte(SomeClass.Method);//调用这个实例的异步执行方法BeginInvoke开始一个异步
IAsyncResult ir = logDel.BeginInvoke(null, null);
//使用frmProcess
frmProcess fp = new frmProcess();
fp.AsyncResult = ir;
fp.ShowDialog();//显示模态窗体给用户显示出正在处理中。
//处理完成后返回处理的结果(方法返回值)
object objReturnValue = logDel.EndInvoke(ir);
//到这里就完成了
写的比较乱,不过如果细看的话是可以看出怎么来做的。当然要修改一些地方才能达到好的效果。
http://www.codeproject.com/cs/miscctrl/BusyBar.asp