掲示板一覧 - トピック一覧 EA API
自作アドインの仮死状態について |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | トピック |
|---|---|
| 未登録ゲスト | 投稿日時: 2010-1-29 15:54 |
自作アドインの仮死状態についてこんにちは、
自作のアドインでは、困っている処があります。 問題はアドイン処理に、EAのAPIをいっぱい呼び出しています。 ソースの例としては: If ItemName = "要素の追加" Then For i As Integer = 0 To 300 Dim newElement As EA.Element = obj.Elements.AddNew("Element_" & i, "Class") newElement.Update() obj.Update() Next End If それで、動作はとても重いです。仮死の状態になりそうです。 そちらでは、この問題を解決する方法がありませんか。 あれば、教えていただけませんか。 |
|
| tkouno | 投稿日時: 2010-1-29 16:00 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: 自作アドインの仮死状態についてEnterprise ArchitectのAPIは、ご指摘のような一括処理を
行うと、大きな負荷がかかります。 この場合、以下のいずれか、あるいは両方の値を 変更して、お試しください。 Repository.BatchAppend →今回の場合には効果があるのではないかと思います。 Repository.EnableUIUpdates →これも、今回の例では効果がありそうです。 なお、サンプルとしてご提示いただきましたソースでは obj.Update() は不要のように思います。 (もし、サンプルの内容に含まれない範囲で、処理を行っていなければ) このUpdateのように、不要な処理を行わないことも、大きな改善に つながります。 例えば、 For i=0 To collection.Count のような場合には、collection.Countの値を変数に入れておくと 処理速度が改善します。 ご参考になりましたら幸いです。 |
| 未登録ゲスト | 投稿日時: 2010-1-29 17:32 |
Re: 自作アドインの仮死状態についてご回答ありがとうございます。
スピードは結構改善しましたね。 仮死の状態になる事って、どのように改善したほうがいいですか。 こちらで考えると、「プロセスバー」用のスレッドを新規したら改善できるかもしれません。 しかしながら、心配する事はEAのプロセスが仮死の状態になったら、全てのスレッドも仮死になりそうです。 これに関するを聞きたいです。 以上、よろしくお願いいたします。 |
|
| tkouno | 投稿日時: 2010-1-29 17:38 |
EA Administrator ![]() ![]() 投稿: 3939 |
Re: 自作アドインの仮死状態についてご確認ありがとうございました。
改善したとのことで、安心しました。 追加のご質問の件ですが、アドイン自体は Enterprise Architect本体と同じスレッドで動作していますので アドインの処理が遅い場合には、Enterprise Architectごと 「仮死」の状態になります。 ただし、別のスレッドを起こせば、そのスレッドは 動作することは可能だと思います。 ご検討のように、スレッドを起こして、別スレッド側で 何かの情報提供をする方法は、一つの良い解決策ではないかと 思います。 実装の一例として、Enterprise Architectを起動すると表示される 「ワンポイントテクニック」は、アドイン内部でスレッドを起動し 別スレッド側で、テクニック情報を表示しています。 こうすることにより、テクニック情報を表示している間にも Enterprise Architectの起動処理が裏で行われています。 スレッドを作成せず表示した場合には、ユーザーがテクニック情報の ダイアログを閉じるまでの間、起動処理は中断されています。 ご参考になりましたら幸いです。 |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |




