"Attempted to Read or write protected memory" 并行读取 AutoCad 数据库时出错
"Attempted to Read or write protected memory" error reading AutoCad databases in parallel
当我尝试执行一些并行操作时,我得到 "Attempted to Read or write protected memory"。我正在将 AutoCad 数据库读入内存以进行一些数据挖掘。我可以使用常规 for
循环来执行此操作,但不能使用 Parallel.ForEach
。有什么想法吗?
Parallel.ForEach(_Files, (currentFile) =>
{
var _File = currentFile;
using (Database _Database = new Database(false, true))
{
_Database.ReadDwgFile(_File, FileOpenMode.OpenForReadAndAllShare, false, null);
_Database.CloseInput(true);
// Do Stuff
}
});
AutoCAD 不支持多线程或并行进程。
如 所述,AutoCAD 不支持多线程。
解决方法可能是使用 AutoCAD 控制台 (accoreconsole.exe)。如果您有外部应用程序 (.exe),请使用它来调用控制台的多个实例,您可以在其中 NETLOAD 一个将执行数据挖掘的 .NET 插件。由于每个控制台实例都是一个单独的应用程序,因此没有多线程。
我在 8 核计算机上使用 AutoCAD 控制台进行了一些测试。如您所见,整个过程花费的时间更少(与按顺序 运行 相比)。查看我写的这个 PDF:Using .NET Programming to Create New Possibilities with the AutoCAD® Core Console
当我尝试执行一些并行操作时,我得到 "Attempted to Read or write protected memory"。我正在将 AutoCad 数据库读入内存以进行一些数据挖掘。我可以使用常规 for
循环来执行此操作,但不能使用 Parallel.ForEach
。有什么想法吗?
Parallel.ForEach(_Files, (currentFile) =>
{
var _File = currentFile;
using (Database _Database = new Database(false, true))
{
_Database.ReadDwgFile(_File, FileOpenMode.OpenForReadAndAllShare, false, null);
_Database.CloseInput(true);
// Do Stuff
}
});
AutoCAD 不支持多线程或并行进程。
如
解决方法可能是使用 AutoCAD 控制台 (accoreconsole.exe)。如果您有外部应用程序 (.exe),请使用它来调用控制台的多个实例,您可以在其中 NETLOAD 一个将执行数据挖掘的 .NET 插件。由于每个控制台实例都是一个单独的应用程序,因此没有多线程。
我在 8 核计算机上使用 AutoCAD 控制台进行了一些测试。如您所见,整个过程花费的时间更少(与按顺序 运行 相比)。查看我写的这个 PDF:Using .NET Programming to Create New Possibilities with the AutoCAD® Core Console