首页 / 浏览问题 / 组件GIS / 问题详情
iobject.net删除本地数据源
35EXP 2022年07月08日
用.net进行二次开发,代码里已经对工作空间下的数据源进行关闭了,如何在代码里对这个数据源删除。

1个回答

您好,要删除本地的数据源文件,建议您可以参考以下流程:

  1. 通过 workspace.Datasources.Close 从当前工作空间中关闭并移除数据源;
  2. 使用 workspace.Save 保存工作空间的当前状态;
  3. 直接使用 File.Delete 删除刚才移除的数据源文件。

希望可以帮到您。

2,158EXP 2022年07月08日

用的就是这种方法,能删除数据源,但报错显示“System.AccessViolationException:“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”

请确认您使用的iObjects .NET组件的版本,我本机使用iObjects .NET 10.2.1版本,用以下代码测试,是无法复现您截图中的问题,建议您可以尝试在您本机运行以下代码,看看是否依然会抛异常:

Workspace workspace = new Workspace();
WorkspaceConnectionInfo connectionInfo = new WorkspaceConnectionInfo();
connectionInfo.Server = workspaceFilePath;
connectionInfo.Type = WorkspaceType.SMWU;
connectionInfo.Version = WorkspaceVersion.UGC70;
connectionInfo.Name = Guid.NewGuid().ToString();

if (workspace.Open(connectionInfo))
{
    if (workspace.Datasources.Close("2") && workspace.Save())
    {
        File.Delete(needToDeletedDatasourceFilePath);
        if (!File.Exists(needToDeletedDatasourceFilePath))
        {
            Console.WriteLine("数据源删除成功!!!");
        }
    }
}

...