我定义了一个Thread线程,需要再线程中往MapControl中加载经过相关处理后的图层数据,结果发现数据虽然可以加载上去,但是再TocControl中无法看到完整图例,并且点击展开图例的时候程序就会卡死,内存会增大很多,但是同样的代码我如果不用线程执行确是好的,请各位高人帮忙看看,以下是主要代码:
//自定义的线程
pThread = new Thread(LoadRemoteDataProc);
pThread.Start(pArrayList); //线程执行的操作
public void LoadRemoteDataProc(object obj)
{
ArrayList pCheckList = (ArrayList)obj; //传递参数正常
ArrayList pList = new ArrayList();
string CatalogName = pCheckList[0].ToString(); //对所有选中的数据逐个提取
SDEOperation pSDEOperation = new SDEOperation();
if (pSDEOperation.Connect())
{
for (int i = 1; i < pCheckList.Count; i++) //提取数据正常
{
//获取栅格目录对象,正常
IRasterCatalog pRasterCatalog = pSDEOperation.getRasterCatalog(CatalogName); //提取数据,正常
IRasterDataset pRasterDataset = pSDEOperation.GetRasterCatalogItem(pRasterCatalog, pCheckList[i].ToString()); if (pRasterDataset != null)
{
//将数据集对象转换为图层对象,成功
IRasterLayer pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromDataset(pRasterDataset); axMapControl.AddLayer(pRasterLayer);
//数据也正常加载了,但是加载上去后一旦点击展开图例就死机了
}
}
}
//退出窗口,关闭线程
if (pThread != null)
{
try
{
pThread.Abort();
}
catch { }
}
} 上述代码在运行的时候可以完成,也没有报错,数据正常加载并可以看到,可就是点击展开图例的时候会死机,不知道是不是COM对象的问题,请各位帮忙指点一二,十分感谢!我的问题和http://forums.esri.com/Thread.aspc=159&f=1707&t=177436这个上面的一样,目前还没找到答案。
//自定义的线程
pThread = new Thread(LoadRemoteDataProc);
pThread.Start(pArrayList); //线程执行的操作
public void LoadRemoteDataProc(object obj)
{
ArrayList pCheckList = (ArrayList)obj; //传递参数正常
ArrayList pList = new ArrayList();
string CatalogName = pCheckList[0].ToString(); //对所有选中的数据逐个提取
SDEOperation pSDEOperation = new SDEOperation();
if (pSDEOperation.Connect())
{
for (int i = 1; i < pCheckList.Count; i++) //提取数据正常
{
//获取栅格目录对象,正常
IRasterCatalog pRasterCatalog = pSDEOperation.getRasterCatalog(CatalogName); //提取数据,正常
IRasterDataset pRasterDataset = pSDEOperation.GetRasterCatalogItem(pRasterCatalog, pCheckList[i].ToString()); if (pRasterDataset != null)
{
//将数据集对象转换为图层对象,成功
IRasterLayer pRasterLayer = new RasterLayerClass();
pRasterLayer.CreateFromDataset(pRasterDataset); axMapControl.AddLayer(pRasterLayer);
//数据也正常加载了,但是加载上去后一旦点击展开图例就死机了
}
}
}
//退出窗口,关闭线程
if (pThread != null)
{
try
{
pThread.Abort();
}
catch { }
}
} 上述代码在运行的时候可以完成,也没有报错,数据正常加载并可以看到,可就是点击展开图例的时候会死机,不知道是不是COM对象的问题,请各位帮忙指点一二,十分感谢!我的问题和http://forums.esri.com/Thread.aspc=159&f=1707&t=177436这个上面的一样,目前还没找到答案。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货