イベントは、AutoCAD 内で発生する状態、または動作についての単なる情報提供であることを忘れないことが重要です。イベントに応じるようにイベント ハンドラを記述できますが、イベント ハンドラが起動するときには AutoCAD は操作の途中の場合があります。そのためイベント ハンドラを AutoCAD およびそのデータベースと連携させて安全に動作させようとすると、処理の内容について一連の制限が生じます。
イベント ハンドラを記述するときは、イベントのシーケンスが考えたとおりの正確な順番で発生するとは考えないでください。たとえば OPEN[開く]コマンドを発行すると、CommandWillStart、DocumentCreateStarted、DocumentCreated、および CommandEnded の各イベントがすべて発生します。しかし、これらのイベントは常にこのとおりの順番で発生するとは限りません。信頼できる唯一のことは、ほとんどのイベントは、開始イベントと終了イベントのペアで発生するということです。
オブジェクト 1 を削除し、次にオブジェクト 2 を削除する場合、ObjectErased イベントをオブジェクト 1、次にオブジェクト 2 の順で受け取れるわけではありません。オブジェクト 2 の ObjectErased イベントを先に受け取る場合があります。
イベント ハンドラ内から対話的な機能を実行しようとすると、イベント発生時に AutoCAD がまだコマンドの処理中である可能性があるため、重大な問題が生じる場合があります。したがって、常に、コマンド プロンプトでの入力の要求、オブジェクト選択要求、およびイベント ハンドラ内からの SendStringToExecute メソッドの使用は、避ける必要があります。
ダイアログ ボックスは対話的な機能とみなされ、AutoCAD の現在の操作に干渉する可能性があります。メッセージ ボックスおよび警告ボックスは対話型とはみなされず、安全に実行できます。しかし、EnterModal、LeaveModal、DocumentActivated、DocumentToBeDeactivated などの一部のイベント ハンドラ内でメッセージ ボックスを実行すると、想定外のシーケンスが発生する可能性があります。
イベントを発生させたオブジェクトは開かれたままになっており、操作は現在進行中です。したがって、イベント ハンドラから同じオブジェクトを修正することは避けてください。しかし、イベントを発生させているオブジェクトから、安全に情報を読み出すことは可能です。
同じイベントを発生させる同じ動作を実行した場合は、無限ループを作ることになります。たとえば、ObjectOpenedForModify イベントの内部からオブジェクトを開こうとしないでください。これを行うと、AutoCAD はオブジェクトを開き続けます。