私はタイムアウト間隔のための特定の種類のデータのデータベースをチェックする必要があるスレッドを作成したアプリケーションがあります。スレッドは、データベース接続の作成、問合せおよび接続のクローズを完全に担当します。スレッド実行中にCoInitializeコールを1回だけ作成し、その後の使用のためにAdo接続とAdoクエリを再利用しました。複数のコールを初期化してアプリケーションをクラッシュさせることはできますか?
今私の質問は、データベースデータチェックのループにCoUnitializeステートメントを置いていた(おそらく誤っていた)ことです。つまり、CoUnitializeの呼び出しは毎回実行されました。アプリケーションがクラッシュしなかった理由は何ですか?リリースするデータがないため、CoUnitializeは失敗しているはずです。私はこれに疑問がある。事前に
おかげ
APIを誤って使用した場合のAPIの動作について、かなり難しいです。 'CoUninitialize'は失敗を報告するメカニズムがないので、実際には失敗することはありません。なぜあなたのアプリはクラッシュしなかったのですか?おそらく 'CoUninitialize'はこの誤用に対して堅牢です。何に関係なく、あなたのアプリを修正して移動してください。 –
同じ質問がありました。私は、アプリケーションをフリーズしてCoInitializeするための2回目の呼び出しがあるときに、私のアプリケーションの1つです。 –
私は実際にやった。今私は私のスレッドが終了したときにのみcounitialize呼び出しを持っています。これにより、(Coinit - coUninit)のペアが1つだけ確保されます。 – CyprUS