v8に公開されているC++オブジェクトが削除された場合、このオブジェクトを指している可能性のあるハンドルを無効にするにはどうすればよいですか。
大規模なアプリケーションへのスクリプトインターフェイスとしてv8を使用しています。より大きなアプリケーションのオブジェクトは、ノードのObjectWrapクラスを使用してv8でラップおよびアクセスされます。
問題は、ラップされたオブジェクトの有効期間が制限されていることです。javascriptで、次のようなものを実行した場合:
var win = app.getWindow();
win.close(); // The C++ object that win references goes away
console.log(win.width()); // This should fail.
コメントのように振る舞ってほしい。win.close()(またはJSの制御外の可能性がある他のイベント)の後、winまたは複製されたハンドルへのアクセスは失敗する必要があります。
現在、ラップされたC ++オブジェクトを無効としてマークし、すべてのメソッド呼び出しで有効性を確認する必要があります。これを行う唯一の方法ですか、それともハンドルを無効としてマークする方法はありますか?