年度变更建库软件5.0版本
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

641 lines
28 KiB

using KGIS.Framework.Utils;
using KGIS.Framework.Utils.Helper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using KUI.Windows;
using KGIS.Framework.Platform;
using KGIS.Framework.Maps;
using Kingo.PluginServiceInterface;
using System.IO;
using KGIS.Framework.DBOperator;
using Aspose.Cells;
using System.Data;
using KGIS.Framework.Utils.ExtensionMethod;
using Kingo.Plugin.BGResultManager.Model;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Carto;
using System.Runtime.InteropServices;
using KGIS.Framework.AE.ExtensionMethod;
using KGIS.Framework.AE;
using Path = System.IO.Path;
using KGIS.Framework.AE.Enum;
using KGIS.Framework.OpenData.Control;
using KGIS.Framework.OpenData.InterFace;
using KGIS.Framework.OpenData.Filter;
using Kingo.OpenData.Filter;
using IRDBHelper = KGIS.Framework.DBOperator.IRDBHelper;
using System.Windows.Controls;
using Kingo.PluginServiceInterface.Model;
using System.Windows.Forms;
using System.Text;
using System.Diagnostics;
using IDEParameter;
using GPHelper;
namespace Kingo.Plugin.BGResultManager.View
{
/// <summary>
/// 合库成果导出 的交互逻辑
/// </summary>
public partial class FrmHKExport : BaseWindow
{
private ProjectInfo projectInfo = null;
private string s_SelPath = string.Empty;
private IWorkspaceAPI s_WsAPI = null;
List<HKPathModel> hKPathModels = new List<HKPathModel>();
Dictionary<string, string> tcNameDic = new Dictionary<string, string>();
public FrmHKExport()
{
InitializeComponent();
GetInitTCDictionary();
InitData();
}
private void InitData()
{
try
{
projectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
string taskPath = projectInfo.BGResultPath;
if (string.IsNullOrEmpty(projectInfo.BGResultPath) || !Directory.Exists(projectInfo.BGResultPath)) return;
foreach (var item in Directory.GetDirectories(taskPath))
{
if (!Directory.Exists(item)) continue;
string gxcgPath = Directory.GetDirectories(item)[0];
if (!Directory.Exists(gxcgPath)) continue;
gxcgPath = Path.Combine(gxcgPath, "更新数据包\\原格式数据");
if (!Directory.Exists(gxcgPath)) continue;
foreach (string gdbPath in Directory.GetDirectories(gxcgPath))
{
if (gdbPath.Contains("PDTGX.gdb")) continue;
PathNCM.Text = gdbPath;
s_WsAPI = new WorkspaceAPI(gdbPath, WorkspaceTypeEnum.GDBFile, true);
if (s_WsAPI == null) continue;
List<KeyAndValue> s_TbList = s_WsAPI.GetFeatureClassName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureDataset).Where(x => !x.Value.StartsWith("TDQSQ")).Select(x => new KeyAndValue() { S_Key = x.Key, S_Value = x.Value }).ToList();
Dictionary<string, string> s_TbList2 = s_WsAPI.GetFeatureClassName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass);
foreach (string item1 in s_TbList2.Keys)
{
if (!s_TbList.Select(x => x.S_Value).Contains(item1))
s_TbList.Add(new KeyAndValue() { S_Key = item1, S_Value = s_TbList2[item1] });
}
foreach (KeyAndValue item1 in s_TbList)
{
if (!tcNameDic.ContainsKey(item1.S_Key)) continue;
tcNameDic.TryGetValue(item1.S_Key, out string aliasName);
hKPathModels.Add(new HKPathModel() { Ischeck = true, LayerName = item1.S_Key, LayerAliasName = aliasName, LayerPath = gdbPath });
}
if (hKPathModels != null)
hKPathModels = hKPathModels.OrderBy(a => a.LayerName).ToList();
}
}
dgTableMapping.ItemsSource = hKPathModels;
}
catch (Exception ex)
{
LogAPI.Debug("初始化合库列表数据失败!" + ex);
}
}
//合并库导出
private void BtnOK_Click(object sender, RoutedEventArgs e)
{
if (string.IsNullOrEmpty(PathNCM.Text) && dgTableMapping.ItemsSource == null)
{
MessageHelper.ShowTips("请选择需合库数据来源!");
return;
}
try
{
projectInfo = MapsManager.Instance.MapService.GetProjectInfo() as ProjectInfo;
if (projectInfo != null && projectInfo.CODE == null) return;
if (string.IsNullOrEmpty(projectInfo.ZLDatabase)) return;
if (this.dgTableMapping == null || (dgTableMapping.ItemsSource as List<HKPathModel>) == null) return;
List<HKPathModel> hkPathModels = dgTableMapping.ItemsSource as List<HKPathModel>;
if (hkPathModels == null || hkPathModels.Count <= 0)
{
MessageHelper.ShowTips("请选择需合库数据来源!");
return;
}
if (hkPathModels.FindAll(a => a.Ischeck).Count <= 0)
{
MessageHelper.ShowTips("请勾选合库数据,使需要合库的数据处于勾选状态!");
return;
}
List<string> isCheckTCName = hkPathModels.Where(a => a.Ischeck).Select(a => a.LayerName).ToList();
this.ShowLoading($"正在进行合库操作...", 0, 0);
string gdbFileName = Guid.NewGuid().ToString();
string tempExportPath = Path.Combine(Directory.GetCurrentDirectory(), gdbFileName);
List<string> copyPath = new List<string>();
foreach (HKPathModel item in hkPathModels)
{
if (!copyPath.Contains(item.LayerPath))
{
copyPath.Add(item.LayerPath);
CopyGDB(item.LayerPath, tempExportPath);
}
item.LayerPath = Path.Combine(tempExportPath, Path.GetFileName(item.LayerPath));
}
if (isCheckTCName.Contains("DLTBGX"))
MergeGX(hkPathModels, "DLTBGX", "DLTBGXGC", "BGHTBBSM");
if (isCheckTCName.Contains("DLTBGXGC"))
MergeGXGC(hkPathModels, "DLTBGXGC");
if (isCheckTCName.Contains("CZCDYDGX"))
MergeGX(hkPathModels, "CZCDYDGX", "CZCDYDGXGC", "BGHBSM");
if (isCheckTCName.Contains("CZCDYDGXGC"))
MergeGXGC(hkPathModels, "CZCDYDGXGC");
if (isCheckTCName.Contains("XZQGX"))
MergeGX(hkPathModels, "XZQGX", "XZQGXGC", "BGHBSM");
if (isCheckTCName.Contains("XZQGXGC"))
MergeGXGC(hkPathModels, "XZQGXGC");
if (isCheckTCName.Contains("CJDCQGX"))
MergeGX(hkPathModels, "CJDCQGX", "CJDCQGXGC", "BGHBSM");
if (isCheckTCName.Contains("CJDCQGXGC"))
MergeGXGC(hkPathModels, "CJDCQGXGC");
//删除临时文件
DelectDirect(tempExportPath);
this.CloseLoading();
}
catch (Exception ex)
{
this.CloseLoading();
MessageHelper.ShowError("合库导出成果失败。" + ex.Message);
LogAPI.Debug("合库导出成果失败!" + ex.Message);
LogAPI.Debug("合库导出成果失败!" + ex.StackTrace);
}
}
private bool CopyGDB(string sourceDir, string targetDirPath)
{
try
{
if (!Directory.Exists(sourceDir)) return false;
string targetDir = targetDirPath + "\\" + System.IO.Path.GetFileName(sourceDir);
if (!Directory.Exists(targetDir)) Directory.CreateDirectory(targetDir);
// 文件及文件夹名称数组
string[] dirColl = Directory.GetDirectories(sourceDir);
string[] fileColl = Directory.GetFiles(sourceDir);
// 便利所有文件
if (fileColl.Length > 0)
{
string fileName;
foreach (string fileDir in fileColl)
{
fileName = System.IO.Path.GetFileName(fileDir);
File.Copy(sourceDir + "\\" + fileName, targetDir + "\\" + fileName, true);
}
}
// 遍历所有文件夹
if (dirColl.Length > 0)
{
string folderName;
foreach (string dir in dirColl)
{
folderName = System.IO.Path.GetFileName(dir);
// 递归调用
Directory.CreateDirectory(targetDir + "\\" + folderName);
CopyGDB(dir, targetDir + "\\" + folderName);
}
}
return true;
}
catch (Exception ex)
{
LogAPI.Debug("CopyGDB失败!" + ex.Message);
LogAPI.Debug("CopyGDB失败!" + ex.StackTrace);
}
return false;
}
private void MergeGX(List<HKPathModel> hkPathModels, string layerName, string gxgcLayerName, string gxgcGLBsmName)
{
IWorkspaceAPI wsFirstAPI = null;
IFeatureClassAPI fcFirstAPI = null;
IWorkspaceAPI wsSecondAPI = null;
IFeatureClassAPI fcSecondGXAPI = null;
IFeatureLayer SecondFeatureLayer = null;
IFeatureClassAPI fcSecondGXGCAPI = null;
ICursor secondGXLayerCur = null;
IRow secondGXLayerRow = null;
IFeatureClassAPI fcOutExportAPI = null;
IWorkspaceAPI newOutExportAPI = null;
IFeatureClassAPI fcAPI = null;
try
{
List<HKPathModel> dltbgxHk = hkPathModels.FindAll(a => a.LayerName == layerName).ToList();
if (dltbgxHk != null)
{
wsFirstAPI = new WorkspaceAPI(projectInfo.ZLDatabase, WorkspaceTypeEnum.GDBFile, true);
fcFirstAPI = wsFirstAPI.OpenFeatureClass(layerName);
int xh = 0;
string bsmLeftStr = string.Empty;
string MaxBSM = GetMaxBSM(fcFirstAPI.FeatureClass);
if (MaxBSM.Length != 18)
{
MessageHelper.ShowError($"列表中{dltbgxHk[0].LayerName}中的标识码字长不是18位!");
LogAPI.Debug($"列表中{dltbgxHk[0].LayerName}中的标识码字长不是18位!");
return;
}
int xh2 = Convert.ToInt32(MaxBSM.Substring(10));
bsmLeftStr = MaxBSM.Substring(0, 10);
if (xh < xh2)
xh = xh2;
//更新层重新编码
for (int i = 0; i < dltbgxHk.Count; i++)
{
wsSecondAPI = new WorkspaceAPI(dltbgxHk[i].LayerPath, WorkspaceTypeEnum.GDBFile, true);
fcSecondGXAPI = wsSecondAPI.OpenFeatureClass(dltbgxHk[0].LayerName);
SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = fcSecondGXAPI.FeatureClass };
ITable secondGXLayerTable = fcSecondGXAPI.FeatureClass as ITable;
secondGXLayerCur = secondGXLayerTable.Update(null, true);
int bsmIdx = secondGXLayerTable.FindField("BSM");
fcSecondGXGCAPI = wsSecondAPI.OpenFeatureClass(gxgcLayerName);
while ((secondGXLayerRow = secondGXLayerCur.NextRow()) != null)
{
string oldbsm = secondGXLayerRow.Value[bsmIdx].ToTrim();
xh++;
string newbsm = bsmLeftStr + xh.ToString().PadLeft(8, '0');
secondGXLayerRow.Value[bsmIdx] = newbsm;
secondGXLayerCur.UpdateRow(secondGXLayerRow);
//重新赋值gxgc
(fcSecondGXGCAPI.FeatureClass as FeatureClass).Workspace.ExecuteSQL($"update {gxgcLayerName} set {gxgcGLBsmName}='{newbsm}' where {gxgcGLBsmName}='{oldbsm}' ");
}
secondGXLayerCur.Flush();
fcAPI = new FeatureClassAPI(SecondFeatureLayer.FeatureClass);
fcAPI.FcToFc(fcFirstAPI.FeatureClass, null, false);
}
}
}
catch (Exception ex)
{
LogAPI.Debug("合库地类图斑更新失败!" + ex.Message);
LogAPI.Debug("合库地类图斑更新失败!" + ex.StackTrace);
throw;
}
finally
{
if (wsFirstAPI != null)
wsFirstAPI.CloseWorkspace();
if (fcFirstAPI != null)
fcFirstAPI.CloseFeatureClass();
if (wsSecondAPI != null)
wsSecondAPI.CloseWorkspace();
if (fcSecondGXAPI != null)
fcSecondGXAPI.CloseFeatureClass();
if (SecondFeatureLayer != null)
Marshal.ReleaseComObject(SecondFeatureLayer);
if (fcSecondGXGCAPI != null)
fcSecondGXGCAPI.CloseFeatureClass();
if (secondGXLayerCur != null)
Marshal.ReleaseComObject(secondGXLayerCur);
if (secondGXLayerRow != null)
Marshal.ReleaseComObject(secondGXLayerRow);
if (fcOutExportAPI != null)
fcOutExportAPI.CloseFeatureClass();
if (newOutExportAPI != null)
newOutExportAPI.CloseWorkspace();
if (fcAPI != null)
fcAPI.CloseFeatureClass();
}
}
private void MergeGXGC(List<HKPathModel> hkPathModels, string gxgcLayerName)
{
IWorkspaceAPI wsFirstAPI = null;
IFeatureClassAPI fcFirstAPI = null;
IWorkspaceAPI wsSecondAPI = null;
IFeatureClassAPI fcSecondGXAPI = null;
IFeatureLayer SecondFeatureLayer = null;
IFeatureClassAPI fcSecondGXGCAPI = null;
ICursor secondGXLayerCur = null;
IRow secondGXLayerRow = null;
IFeatureClassAPI fcOutExportAPI = null;
IWorkspaceAPI newOutExportAPI = null;
IFeatureClassAPI fcAPI = null;
try
{
List<HKPathModel> dltbgxHk = hkPathModels.FindAll(a => a.LayerName == gxgcLayerName).ToList();
if (dltbgxHk != null)
{
wsFirstAPI = new WorkspaceAPI(projectInfo.ZLDatabase, WorkspaceTypeEnum.GDBFile, true);
fcFirstAPI = wsFirstAPI.OpenFeatureClass(gxgcLayerName);
int xh = 0;
string bsmLeftStr = string.Empty;
string MaxBSM = GetMaxBSM(fcFirstAPI.FeatureClass);
if (MaxBSM.Length != 18)
{
MessageHelper.ShowError($"列表中{dltbgxHk[0].LayerName}中的标识码字长不是18位!");
LogAPI.Debug($"列表中{dltbgxHk[0].LayerName}中的标识码字长不是18位!");
return;
}
int xh2 = Convert.ToInt32(MaxBSM.Substring(10));
bsmLeftStr = MaxBSM.Substring(0, 10);
if (xh < xh2)
xh = xh2;
//更新层重新编码
for (int i = 0; i < dltbgxHk.Count; i++)
{
wsSecondAPI = new WorkspaceAPI(dltbgxHk[i].LayerPath, WorkspaceTypeEnum.GDBFile, true);
fcSecondGXAPI = wsSecondAPI.OpenFeatureClass(dltbgxHk[0].LayerName);
SecondFeatureLayer = new FeatureLayerClass() { FeatureClass = fcSecondGXAPI.FeatureClass };
ITable secondGXLayerTable = fcSecondGXAPI.FeatureClass as ITable;
secondGXLayerCur = secondGXLayerTable.Update(null, true);
int bsmIdx = secondGXLayerTable.FindField("BSM");
fcSecondGXGCAPI = wsSecondAPI.OpenFeatureClass(gxgcLayerName);
while ((secondGXLayerRow = secondGXLayerCur.NextRow()) != null)
{
string oldbsm = secondGXLayerRow.Value[bsmIdx].ToTrim();
xh++;
string newbsm = bsmLeftStr + xh.ToString().PadLeft(8, '0');
secondGXLayerRow.Value[bsmIdx] = newbsm;
secondGXLayerCur.UpdateRow(secondGXLayerRow);
}
secondGXLayerCur.Flush();
fcAPI = new FeatureClassAPI(SecondFeatureLayer.FeatureClass);
fcAPI.FcToFc(fcFirstAPI.FeatureClass, null, false);
}
}
}
catch (Exception ex)
{
LogAPI.Debug("合库地类图斑更新失败!" + ex.Message);
LogAPI.Debug("合库地类图斑更新失败!" + ex.StackTrace);
throw;
}
finally
{
if (wsFirstAPI != null)
wsFirstAPI.CloseWorkspace();
if (fcFirstAPI != null)
fcFirstAPI.CloseFeatureClass();
if (wsSecondAPI != null)
wsSecondAPI.CloseWorkspace();
if (fcSecondGXAPI != null)
fcSecondGXAPI.CloseFeatureClass();
if (SecondFeatureLayer != null)
Marshal.ReleaseComObject(SecondFeatureLayer);
if (secondGXLayerCur != null)
Marshal.ReleaseComObject(secondGXLayerCur);
if (secondGXLayerRow != null)
Marshal.ReleaseComObject(secondGXLayerRow);
if (fcOutExportAPI != null)
fcOutExportAPI.CloseFeatureClass();
if (newOutExportAPI != null)
newOutExportAPI.CloseWorkspace();
if (fcAPI != null)
fcAPI.CloseFeatureClass();
}
}
private string GetMaxBSM(IFeatureClass fc)
{
//System.Windows.Forms.Application.DoEvents();
string BSM = string.Empty;
int BSMIndex = fc.FindField("BSM");
if (BSMIndex == -1) return BSM;
ITable table = (ITable)fc;
ITableSort tableSort = new TableSortClass();
tableSort.Table = table;
tableSort.Fields = "BSM";
tableSort.set_Ascending("BSM", false);
tableSort.Sort(null);
ICursor cursor = tableSort.Rows;
IRow row = cursor.NextRow();
if (row != null)
{
int maxBSM = 0;
int currBSM = 0;
string BSMStr = row.Value[BSMIndex].ToString();
if (BSMStr.Length != 18) return BSM;
string subBSMStr = BSMStr.Substring(9);
try
{
currBSM = Convert.ToInt32(subBSMStr);
}
catch (Exception)
{
return BSM;
}
if (currBSM > maxBSM) maxBSM = currBSM;
if (BSMStr.Length != 18) return BSM;
string maxStr = maxBSM.ToString();
int zeroNum = 9 - maxStr.Length;
for (int i = 0; i < zeroNum; i++)
{
maxStr = 0 + maxStr;
}
BSM = BSMStr.Substring(0, 9) + maxStr;
}
return BSM;
}
private void BtnCanel_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
//删除勾选路径
private void btnDeletePath_Click(object sender, RoutedEventArgs e)
{
try
{
if (this.dgTableMapping == null || (dgTableMapping.ItemsSource as List<HKPathModel>) == null) return;
List<HKPathModel> listTableMapping = dgTableMapping.ItemsSource as List<HKPathModel>;
listTableMapping.RemoveAll(a => a.Ischeck == true);
hKPathModels = listTableMapping;
dgTableMapping.ItemsSource = null;
dgTableMapping.ItemsSource = hKPathModels;
}
catch (Exception ex)
{
MessageHelper.ShowTips("全选发生异常:" + ex.Message);
}
}
//选择需添加图层的路径
private void btnSelectedHKPath_Click(object sender, RoutedEventArgs e)
{
try
{
PathNCM.Text = null;
hKPathModels.Clear();
//dgTableMapping.ItemsSource = null;
FolderBrowserDialog dialog = new FolderBrowserDialog();
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
s_SelPath = dialog.SelectedPath;
string fileName = string.Empty;
if (!string.IsNullOrWhiteSpace(s_SelPath))
PathNCM.Text = s_SelPath;
if (!string.IsNullOrEmpty(PathNCM.Text))
{
foreach (string gdbPath in Directory.GetDirectories(PathNCM.Text))
{
if (gdbPath.EndsWith("PDTGX.gdb")) continue;
if (Path.GetExtension(gdbPath).ToUpper().Replace('.', ' ').TrimStart() != "GDB") continue;
s_WsAPI = new WorkspaceAPI(gdbPath, WorkspaceTypeEnum.GDBFile, true);
if (s_WsAPI == null) continue;
List<KeyAndValue> s_TbList = s_WsAPI.GetFeatureClassName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureDataset).Where(x => !x.Value.StartsWith("TDQSQ")).Select(x => new KeyAndValue() { S_Key = x.Key, S_Value = x.Value }).ToList();
Dictionary<string, string> s_TbList2 = s_WsAPI.GetFeatureClassName(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass);
foreach (string item1 in s_TbList2.Keys)
{
if (!s_TbList.Select(x => x.S_Value).Contains(item1))
s_TbList.Add(new KeyAndValue() { S_Key = item1, S_Value = s_TbList2[item1] });
}
foreach (KeyAndValue item1 in s_TbList)
{
if (!tcNameDic.ContainsKey(item1.S_Key)) continue;
tcNameDic.TryGetValue(item1.S_Key, out string aliasName);
hKPathModels.Add(new HKPathModel() { Ischeck = true, LayerName = item1.S_Key, LayerAliasName = aliasName, LayerPath = gdbPath });
}
}
if (hKPathModels != null)
hKPathModels = hKPathModels.OrderBy(a => a.LayerName).ToList();
dgTableMapping.ItemsSource = null;
dgTableMapping.ItemsSource = hKPathModels;
}
}
}
catch (Exception ex)
{
LogAPI.Debug("选择合库数据库失败:" + ex);
MessageHelper.Show("选择合库数据库失败:" + ex);
}
finally
{
if (s_WsAPI != null)
s_WsAPI.CloseWorkspace();
}
}
private void AllCheckEidt_EditValueChanged(object sender, DevExpress.Xpf.Editors.EditValueChangedEventArgs e)
{
try
{
if (this.dgTableMapping == null || (dgTableMapping.ItemsSource as List<HKPathModel>) == null)
{
return;
}
List<HKPathModel> listTableMapping = dgTableMapping.ItemsSource as List<HKPathModel>;
bool check = (sender as DevExpress.Xpf.Editors.CheckEdit).IsChecked == null ? false : bool.Parse((sender as DevExpress.Xpf.Editors.CheckEdit).IsChecked.Value.ToString());
if (check)
{
listTableMapping.ForEach(a => a.Ischeck = true);
}
else
{
listTableMapping.ForEach(a => a.Ischeck = false);
}
dgTableMapping.RefreshData();
dgTableMapping.ItemsSource = null;
dgTableMapping.ItemsSource = listTableMapping;
}
catch (Exception ex)
{
MessageHelper.ShowTips("全选发生异常:" + ex.Message);
}
}
private void checkBox_Click(object sender, RoutedEventArgs e)
{
HKPathModel hkPath = dgTableMapping.SelectedItem as HKPathModel;
if (hkPath != null)
{
hkPath.Ischeck = (bool)(sender as System.Windows.Controls.CheckBox).IsChecked;
}
}
private void GetInitTCDictionary()
{
if (tcNameDic == null) tcNameDic = new Dictionary<string, string>();
if (tcNameDic.Count > 0) tcNameDic.Clear();
tcNameDic.Add("DLTBGX", "地类图斑更新层");
tcNameDic.Add("DLTBGXGC", "地类图斑更新过程层");
tcNameDic.Add("CZCDYDGX", "城镇村更新层");
tcNameDic.Add("CZCDYDGXGC", "城镇村更新过程层");
tcNameDic.Add("XZQGX", "行政区更新层");
tcNameDic.Add("XZQGXGC", "行政区更新过程层");
tcNameDic.Add("CJDCQGX", "村级调查区更新层");
tcNameDic.Add("CJDCQGXGC", "村级调查区更新过程层");
}
#region DelectDirect
private void DelectDirect(string srcPath)
{
try
{
DirectoryInfo dir = new DirectoryInfo(srcPath);
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
foreach (FileSystemInfo i in fileinfo)
{
if (i is DirectoryInfo) //判断是否文件夹
{
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
subdir.Delete(true); //删除子目录和文件
}
else
{
File.Delete(i.FullName); //删除指定文件
}
}
dir.Delete(true);
}
catch (Exception ex)
{
//MessageHelper.ShowWarning("工程目录文件有占用,请退出占用后重试!");
LogAPI.Debug("工程目录文件有占用,请退出占用后重试!" + ex);
}
}
#endregion
}
}