问题描述
最近在做地图,使用的是C#Winform调用开源地图控件Gmap。现在有一个问题,Gmap控件在电脑处于联网状态下会加载很久(20秒左右,也是加载本地缓存),在这个阶段整个软件会一直处于假死状态,我将整个任务放进BackgroundWorker中也不行,而在拔掉电脑网线过后,加载缓存只需要2秒左右就出来了,请问如何处理才能让我写的窗体立刻就能加载出来?退一步,如何让软件不假死在那里?恳请做过Gmap的前辈指点一二!谢谢!
解决方案
解决方案二:
Gmap没有用过,不过比较耗时的异步操作都需要放到线程中去做,防止主线程被阻塞,出现无响应
解决方案三:
是谷歌地图吗?大陆访问不了谷歌,所以慢
解决方案四:
引用楼主xulong20006的回复:
在这个阶段整个软件会一直处于假死状态,我将整个任务放进BackgroundWorker中也不行,
放进BackgroundWorker为什么就行,你想过吗?能说你的理由吗?胡乱把代码放进BackgroundWorker明明只会让过程更慢啊!谁跟你说过凡是放入BackgroundWorker的代码就变快了?有的人说“1+2等于几我自己不算,我请别人给我算”,这能更快吗?这只会更慢的。
解决方案五:
你要想解决“响应、流畅”问题,那么你必须稍微深入一点点,你必须主动研究并重构更深入一点你自己的那部分代码。这部分代码,谁知道你是怎么写的呢?只抓住一点BackgroundWorker的概念皮毛没用。
解决方案六:
引用1楼xian_wwq的回复:
Gmap没有用过,不过比较耗时的异步操作都需要放到线程中去做,防止主线程被阻塞,出现无响应
我就是这样做的
解决方案七:
引用2楼hchloveit的回复:
是谷歌地图吗?大陆访问不了谷歌,所以慢
谷歌已经妥协了,国内已经可以访问谷歌地图了ditu.google.cn/
解决方案八:
引用3楼sp1234的回复:
Quote: 引用楼主xulong20006的回复:
在这个阶段整个软件会一直处于假死状态,我将整个任务放进BackgroundWorker中也不行,放进BackgroundWorker为什么就行,你想过吗?能说你的理由吗?胡乱把代码放进BackgroundWorker明明只会让过程更慢啊!谁跟你说过凡是放入BackgroundWorker的代码就变快了?有的人说“1+2等于几我自己不算,我请别人给我算”,这能更快吗?这只会更慢的。
我的理解是:现在CPU都是多核多线程,我将费时的任务放在后台线程去处理,不让其阻塞主线程,我这样的理解错了吗?我是由于没有别的更好的方法才将其放在BackgroundWorker中试一下,可是还会卡。这是一个开源项目,国内外很多人都在用,应该有什么好的方法去解决这个问题,只是我找了很多资料没找到,才想到CSDN上向用过这个开源库的前辈请教。请前辈不吝赐教!