1

さて、COMを使用してQuickboos(QBFC)と通信するアプリケーションがあります。私のアプリケーションが閉じると、QuickBooksで確立された接続が実際に閉じられてから終了することを確認するメソッドが呼び出されます。このメソッドを呼び出さないと、Quickbooksは、アプリケーションが実行されていなくても、アプリケーションとの開いているセッションを認識するため、ユーザーが会社のファイルを閉じることができない可能性があります。

現在、Quickbooksでさまざまなアクションを実行した後、セッションを閉じています。AppDomain.UnhandledException、Dispatcher.UnhandledException、およびApplication.Exitイベントハンドラーを実装して、Quickbooksでセッションを開いているときにアプリケーションを閉じたり、未処理の例外が発生したりした場合に、セッションが閉じられるようにしました。

これはうまく機能しますが、開発中に問題が発生し、セッションを閉じる前にデバッガーを停止すると、手動でプロセスを終了するまでクイックブックファイルが永続的にロックされます。Quickbooksとの今後のコミュニケーションは、新しいセッションで行われます。

セッションをクリーンアップできるように、「停止」を押したときにデバッガーがアプリケーションの強制終了を完了する前に、コードを実行することは可能ですか?それとも、私たちは水中でただ死んでいるだけですか?私はEnvironmentクラスを調べましたが、「Exit」メソッドは「stop」を押したときにデバッガーが呼び出しているものと似ていると99%確信しているので、答えは「no」だと思います...しかし、私はそれを確実に見つけることは害にはならないだろうと考えました

4

1 に答える 1

2

必要な場合にのみQBFC接続を確立し、操作が完了したらすぐに解放することをお勧めします。

試すことができるもう1つの方法は、アプリケーションの起動中または新しい接続を取得する前に、以前の接続を閉じることです。何らかのセッション識別子が関係している場合は、同じものをファイルに保持し、それを使用して接続を閉じます。

于 2013-02-20T19:27:46.467 に答える