在更新数据的时候出现不能更新的问题。就是在运行程序中,如果其他用户改变服务器的地图数据,我再重新加载地图数据还是原来的数据(都是同一版本),但是重新运行程序就可以了,这是怎么回事?
//=======================================================================
//重新加载地图
//创建时间:06-07-13
//最后修改时间:
//输入参数:userVersion 以该版本加载地图数据
//=======================================================================
public bool ReLoadMap(String userVersion)
{
//connect to the server of sde
try
{
layersContainer.SetBuddyControl(null);
//删除所有图层
if (map != null) map.ClearLayers();
if (eyeMap != null) eyeMap.ClearLayers();
if (!bDataChanged) return true;
IPropertySet iProSet = new PropertySet();
iProSet.SetProperty("SERVER", systemP.sdeIP);
iProSet.SetProperty("INSTANCE", systemP.sdeServiceName);
iProSet.SetProperty("DATABASE", systemP.serviceName);
iProSet.SetProperty("USER", dataInfo.userName);
iProSet.SetProperty("PASSWORD", dataInfo.userPassword);
iProSet.SetProperty("VERSION", userVersion);
IWorkspaceFactory iWorkspace = new SdeWorkspaceFactory();
IFeatureWorkspace iFeatureWs = null;
int index = 0;
for (index = 0; index < 10; index++)
{
try
{
iFeatureWs = (IFeatureWorkspace)iWorkspace.Open(iProSet, 0);
if (iWorkspace != null) break;
}
catch (Exception)
{
return false;
}
}
if (iFeatureWs == null)
{
MessageBox.Show("加载图层出错,请重新运行本程序");
return false;
}
pWs = iFeatureWs;
if (iFeatureWs != null)
{
//IWorkspace iWps = iFeatureWs as IWorkspace;
IFeatureDataset iDataset1 = iFeatureWs.OpenFeatureDataset("基础图层");
if (iDataset1 == null) return false;
IEnumDataset iEnDataset = iDataset1.Subsets;
IDataset iDataset = iEnDataset.Next();
while (iDataset != null)
{
IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);
//IDataset iDataset = iFeatureCls as IDataset;
IFeatureLayer iFeatureLyr = new FeatureLayer();
iFeatureLyr.FeatureClass = iFeatureCls;
iFeatureLyr.Name = iDataset.Name;
map.AddLayer(iFeatureLyr, 0);
if (iFeatureLyr.Name != "SDE.建筑_region") eyeMap.AddLayer(iFeatureLyr, 0);
iDataset = iEnDataset.Next();
}
iDataset1 = iFeatureWs.OpenFeatureDataset("电力专业图层");
if (iDataset1 == null) return false;
iEnDataset = iDataset1.Subsets;
iDataset = iEnDataset.Next();
while (iDataset != null)
{
IFeatureClass iFeatureCls = iFeatureWs.OpenFeatureClass(iDataset.Name);
//IDataset iDataset = iFeatureCls as IDataset;
IFeatureLayer iFeatureLyr = new FeatureLayer();
iFeatureLyr.FeatureClass = iFeatureCls;
iFeatureLyr.Name = iDataset.Name;
map.AddLayer(iFeatureLyr, 0);
//m_hawkMap.AddLayer(iFeatureLyr, 0);
iDataset = iEnDataset.Next();
}
}
else
{
return false;
//MessageBox.Show("没有数据层!");
}
layersContainer.SetBuddyControl(map);
}
catch (Exception e2)
{
//记录操作并写入文件
AppendLogFile("读出数据层失败! " + e2.Message, false);
return false;
//MessageBox.Show(ex.Message);
}
layersContainer.SetBuddyControl(map);
}