> 自作のプログラムでhdbを参照しているときに、時々HAMLOGでインデクス
> ファイルがないとのエラーが出て停止出来なく成ります。
> ・・・ということでしょうか?
その通りです
> 具体的にどんなエラーでしょうか?
> インデックスファイルがない、というエラーですか?
No.5ファイルがオープンできない
(c:Hamlog\Hamlog.dx0)
インデックス構築が出来ません
と出ます。連続で参照中にHamlogデータ入力などを行う時に発生していますので、Hamlogで新データでインデクスファイルを構築するとき、外部からアクセスして、インデクスファイルがないか矛盾があり、外部からのコールでも再構築しようとしてお互いにおかしくなるのだと思います。
>
> > 極端な時ですが、別のプログラムで参照中にデータを削除処理すると同様のエラーが出ます。
>
> 極端な時ですが、自作のプログラムでQSOデータを共有中にHAMLOGでデー
> タを削除処理すると、自作のプログラムで同様のエラーが出ます。
> ・・・ということでしょうか?
その通りです。
>
> HAMLOGでQSOデータを1件以上削除したときは、インデックスファイルを
> 削除してから生成してますので、そうなると思います。
と言う事は、インデックス再構築中は他からのアクセスを待たせる機能は持っていないのですね。
> 共有を使わなければファイルはロックされてますので大丈夫です。
当然ですね。
と言う事で、原因は理解できましたが、困ったな。共有可能と言っても、HDBへのアクセスが衝突した場合の処理はしてないと言う事ですよね。
「インデックス再構築中は他からのアクセスを待たせる機能」自体は、HDB操作開始時にフラグを上げ、終了時にフラグを下げるようにし、HDB操作はこのフラグが下がっているときのみ可能にすれば、対応出来るのでしょうが。これは私の所だけでは対処出来ないし、DLLをいじると、何が起きるか予測もつかないし(待ち時間の問題、デッド・ロックの問題 無いかもしれないが、あったら大変)。別バージョンをお願いしても常に2バージョンあるのも困るし。困ったな。何か良いアイデアありませんか。