私は Com サーバーを作成しており、COM クライアントが予期せず閉じられたときの状況を検出するコードを書きました。この場合、COM サーバー コード内で COM サーバーを閉じる必要があります。
これどうやってするの?
UPD: COM サーバーがハングしたり、より正確には COM クライアントから COM サーバーにアタッチできない状況がありますが、COM サーバーを含むアプリケーションは生きているので、COM サーバーはすべての古い COM クライアントが切断されたことを検出できると思います/新しいクライアントが接続されていないため、クローズ/クラッシュし、アプリケーションが再起動します。
別のスレッドでCOMクライアントに次のコードを記述しました
while(not we are closing)
{
unknown->QueryInterface(IComServer, &server);
if (server)
return;
}
そのため、COM クライアントは、サーバーが実際に動作する準備が整うまで待つことができます
UPD2: テスト済み: 12 分後に COM サーバーが閉じられました