アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、ACTIVE REPORTSを使用して帳票の印刷を行っているのですが、
下記のような関数がありまして、複数回同時にこの関数をCallすると
1回目はうまく印刷するのですが、2回目以降はUnload Objが影響してエラーとなります。
そもそも同時実行する必要がないので、修正することは容易なのですが、
Unloadは他のスレッドに影響を及ぼすものなのでしょうか?
また、OSによって異なったりするものでしょうか?
何か情報をお持ちの方がいらっしゃいましたら、アドバイスをお願いします。

[OSのVER]:Windows2000
[VBのVER]:VB6

Private Sub cmd_Click()
Dim Obj As Object

Obj = aaaOut
CALL Obj.Printer.PrintDialog

(省略してますがここで印刷を行ってます)
DoEvents ← この関数を複数回呼ぶことが可能になってます

If Not ObjArvRpt Is Nothing Then
Unload Obj
Set Obj = Nothing
End If

End Sub

A 回答 (1件)

問題は2つあります。



まず数値ですけど-が抜けてますね。これを16進数にすると0x80010007となり、
「警告」「RPC機能」「既にそのブロックは破壊されています。」になります。
要するに使用できたメモリ領域が何らかの理由で破壊されていて使用できない状態になっているのでしょう。
メモリ領域を破壊する個所は、一番最後の
Set Obj = Nothing
でしょうね。

次にDoEventsの使い方が間違ってます。
DoEventsは、他の処理へ制御をまわすためのものであり、
関数を複数回呼び出すことを可能にするものではありません。

DoEventsを使用して同じ関数を複数回呼び出しを可能にしていることが問題です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!