问题描述
在调用WebService时时间较长,WinForm窗体会无法响应用户其他操作。为掩盖此现象,本人想在查询过程中显示等待窗口或者根据查询进度显示进度条。请问如何实现,最好请大神能给出具体代码,本人新手。多谢多谢!我的查询步骤大概是点击button,然后开始查询,查询代码如下:ServiceReference1.WeaWSClientclient=newServiceReference1.WeaWSClient();ServiceReference1.stringArray[]strArrayNational=client.GetSta(XXX);......后续为将查询数据显示到FORM界面操作。主要耗时过程就在查询过程。应该如何实现,我的查询代码放到实现方法的什么位置?求详解,多谢!
解决方案
解决方案二:
求助求助!!!
解决方案三:
在你的查询代码上面加一个显示一张gif图片的就行了
解决方案四:
不要妄想什么进度显示了,因为你根本没法获取进度
解决方案五:
如果是下载可以参考这个尽量使用异步或者启用线程吧
解决方案六:
异步
解决方案七:
引用2楼starfd的回复:
在你的查询代码上面加一个显示一张gif图片的就行了
引用3楼starfd的回复:
不要妄想什么进度显示了,因为你根本没法获取进度
为什么呢?
解决方案八:
这种不只是你的webservice,而是所有耗时长又需要同步的操作都会这么处理:子线程:负责耗时的操作操作结束回调主线程:开启子线程模态方式显示一个弹窗在回调时关闭模态显示的等待窗口能不能获得进度取决于你的耗时操作本身,是否有提供获取进度的方式
解决方案九:
1、点击查询按钮后,显示一个进度条窗体2、综合你的场景,如果可以,可以异步调用webservice3、你想控制webservice调用的进度,这个没办法
解决方案十:
引用楼主flyhed的回复:
在调用WebService时时间较长,WinForm窗体会无法响应用户其他操作。为掩盖此现象,本人想在查询过程中显示等待窗口或者根据查询进度显示进度条。请问如何实现,最好请大神能给出具体代码,本人新手。多谢多谢!我的查询步骤大概是点击button,然后开始查询,查询代码如下:ServiceReference1.WeaWSClientclient=newServiceReference1.WeaWSClient();ServiceReference1.stringArray[]strArrayNational=client.GetSta(XXX);......后续为将查询数据显示到FORM界面操作。主要耗时过程就在查询过程。应该如何实现,我的查询代码放到实现方法的什么位置?求详解,多谢!
首先你要贴出,“不考虑什么webservice”,就是普通的调用一个方法,你如何显示等待窗口?因为看你的描述,估计你还没有到这个纠结webservice标题党的程度。如果你描述明白这个,说明你的基础在哪里,那么答案就很简单了。
解决方案十一:
你应该先敢于说明白,你到底是不会显示一个普通的等待窗口,还是不会在其中调用“貌似高大上的”webservice。如果是前者,那就是另外一个话题了,你需要多交点学费从基础学起了。
解决方案十二:
引用10楼sp1234的回复:
你应该先敢于说明白,你到底是不会显示一个普通的等待窗口,还是不会在其中调用“貌似高大上的”webservice。如果是前者,那就是另外一个话题了,你需要多交点学费从基础学起了。
显示等待窗口我是会的,只是不知道怎么样使得调用WebService下载到数据结束之后,显示的等待窗口也正好关闭。这要怎么处理?
解决方案十三:
引用7楼lc316546079的回复:
这种不只是你的webservice,而是所有耗时长又需要同步的操作都会这么处理:子线程:负责耗时的操作操作结束回调主线程:开启子线程模态方式显示一个弹窗在回调时关闭模态显示的等待窗口能不能获得进度取决于你的耗时操作本身,是否有提供获取进度的方式
我就是想实现你说的功能,具体怎么实现?
解决方案十四:
引用12楼flyhed的回复:
Quote: 引用7楼lc316546079的回复:
这种不只是你的webservice,而是所有耗时长又需要同步的操作都会这么处理:子线程:负责耗时的操作操作结束回调主线程:开启子线程模态方式显示一个弹窗在回调时关闭模态显示的等待窗口能不能获得进度取决于你的耗时操作本身,是否有提供获取进度的方式我就是想实现你说的功能,具体怎么实现?
具体?这个流程就很具体了;我建议你先写了,再把具体问题拿来问比较好