应用程序初始化和加载时优化 (.NET)
托管应用程序可以通过实现可选接口来选择执行初始化或终止任务。Autodesk.AutoCAD.Runtime.IExtensionApplication 该接口提供了 和 方法。由于无法手动卸载托管应用程序,因此在 AutoCAD 程序关闭时将调用该方法的任何实现。Autodesk.AutoCAD.Runtime.IExtensionApplicationInitialize()Terminate()Terminate() 如果应用程序定义了大量数据类型,则可以通过实现和使用两个可选的自定义属性来优化其加载时性能。这些特性可帮助 AutoCAD 程序查找应用程序的初始化例程和命令处理程序。IExtensionApplicationExtensionApplicationCommandClass 任何托管应用程序都可以使用这些属性。然而,它们的优化效果只有在较大的应用中才能测量。 使用 ExtensionApplication 和 CommandClass 属性当 AutoCAD 程序加载托管应用程序时,它会查询应用程序的组件以查找属性。如果找到此特性,AutoCAD 程序会将该特性的关联类型设置为应用程序的入口点。如果未找到此类属性,AutoCAD 将在所有导出的类型中搜索实现。如果未找到实现,AutoCAD 程序将跳过特定于应用程序的初始化步骤。ExtensionApplicationIExtensionApplication 该属性只能附加到一种类型。它所附加到的类型必须实现接口。ExtensionApplicationIExtensionApplication 除了在应用程序中搜索实现之外,AutoCAD 程序还会查询应用程序的组件中的一个或多个属性。如果找到此属性的实例,AutoCAD 程序将仅搜索其关联类型的命令方法。否则,它将搜索所有导出的类型。IExtensionApplicationCommandClass 可以为定义 AutoCAD 命令处理程序的任何类型声明属性。如果应用程序使用该特性,则必须为包含 AutoCAD 命令处理程序方法的每个类型声明此特性的实例。CommandClassCommandClass 以下过程介绍如何使用这些属性。
注意:必须在程序集上下文中声明这些属性。
VB.NET...
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
<Assembly: ExtensionApplication(GetType(HelloWorld.HelloWorldApp))>
<Assembly: CommandClass(GetType(HelloWorldCommands))>
Namespace HelloWorld
Public Class HelloWorldApp
Implements Autodesk.AutoCAD.Runtime.IExtensionApplication
...
End Class
Public Class HelloWorldCommands
' Defines a command that prompts a message on the AutoCAD
' command line.
<Autodesk.AutoCAD.Runtime.CommandMethod("HELLO")>
Public Sub HelloCommand()
...
End Sub
End Class
End Namespace
C#...
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
[assembly: ExtensionApplication(typeof(HelloWorld.HelloWorldApp))]
[assembly: CommandClass(typeof(HelloWorld.HelloWorldCommands))]
namespace HelloWorld
{
public class HelloWorldApp : Autodesk.AutoCAD.Runtime.IExtensionApplication
{
...
}
public class HelloWorldCommands
{
// Defines a command that prompts a message on the AutoCAD
// command line.
[CommandMethod("HELLO")]
public void HelloCommand()
{
...
}
}
}
父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-10-29 07:08
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.