随笔 - 714  文章 - 0  评论 - 12812  阅读 - 301万 

先上一张MapXtreme的丑陋的图片

这个是我历经千山才弄出来的效果。

在处理的过程中,会有一些问题经常报错,网上几乎找不到资料可以解决了,本人经过大量实践,反复点击报错,代码步步注释的方法。

终于小有成果。

Table.BeginAccess(TableAccessMode.Write);这句代码,报错率非常高。

我们在修改一个表的时候,通常要begin一下,然后处理,处理完之后再end一下

在反复的begin与end中,一旦拿不到锁,就报错了。通常这个问题引起,是另一个表正在处理时,发生异常,你try完之后,没有endAccess引起的

 Table.DeleteFeature(feature);这句代码的报率也很高,网上流传这么一些代码:

foreach(Featrue fea in Table)
{
  Table.DeleteFeature(feature);
}

说明:

复制代码
用来删除表的数据,这里报错率通常是由于Table.BeginAccess(TableAccessMode.Write);这个异常引起的

所以最好处理就是try一下Table.BeginAccess(TableAccessMode.Write);正常后,再执行删除表数据

这里有一点提的,其实里面的东西最后还是执行delete from table 
where mkey=@mkey之类的语句,这样等于一条一条执行。

还不如直接执行delete from table就OK了,foreach来干什么。那个MISql操作的,几乎和ADO.net的操作一个样,不用担心不会。
复制代码

 

 

最后一个就是最严重的问题了。

产生的问题是这样的:地图上画上的点,一开始好好的,然后点一下放大或细小,一会正常,一会又点不见了,再点一下,点又出来了,就这样反反复复。

一会正常,一会不正常。

经常反复大量研究表明:地图是存在Session中的,在研究中发现,Session经常不确定性的会丢失,所以,最好在画点的逻辑里加上一些处理:

 

 

我是这样处理的:

复制代码
if (CommonHelper.Get<string>("Command"""== "" || map.CustomProperties["layerCount"== null || (int)map.CustomProperties["layerCount"!= map.Layers.Count)
            {
                
                RUnitMapView mapView 
= new RUnitMapView(map);
                map.CustomProperties[
"layerCount"= map.Layers.Count;//预防Session的layer丢失
            }
复制代码

 

说明:

找了一个地方保存下地图的图层数,由于生成了点之后,地图的图层一定会和初始图层不一样。所以,用了这个来做为判断Session是否丢失.

如果Session丢失,重新加载一下数据点的处理。这样,终于解决了问题.

 

 

 

posted on   路过秋天  阅读(1578)  评论(6编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
历史上的今天:
2006-11-16 取存储过程output的取
2006-11-16 WebConfig常用配置文件说明
2006-11-16 GridView双击某行弹出一新窗口
路过秋天
点击右上角即可分享
微信分享提示