1Share00みなさま今晩は。時半ごろ、書き終わるころは日付が変わりそうな感じです。気づいたら師走、隣のマルエツで買ってむさぼり食う焼き芋が非常に美味な季節です。皮から丸かじりしてたらマネージャが「この女、ありえねぇ」という顔をしていましたが気にしないです。みのさん(※)が皮ごと食べると胸焼けしないって言ってたですもん。みのもんた)とまあ世迷言はこの辺にしておいて、今日は身内やら仕事やら色々あって正直どんよりしていたのですが、ちょっと面白いことがあったので、元気になりました。この勢いを逃さず翻訳アップ行こうと思います。追加)まとめページを作りました。サーバーと同じプロセスで実行します。管理エージェントを別のプロセスで実行すると、ブレークポイントに飛ぶことができません。セッションでタイムアウトが発生すると問題が生じることがあります。このとき、アンマネージドオブジェクトに割り当てられたリソースは、開放が行われません。メソッドが呼び出されて、リソースの開放が行われます。呼び出されるオブジェクトにはアクセスすることができなくなります。リソースをクリーンアップするデストラクタをクラスごとに実装します。デストラクタには、アプリケーションドメインをアンロードし、エクスポート処理を中断するコードを記述します。上記の問題が発生する可能性のある箇所は、次のインターフェイスを実装するクラスになります。IMAExtensibleCallExportIMAExtensibleFileImportただし、拡張モジュールに複数のデストラクタが存在している場合、一定の順序での呼び出しは保証されませんので注意が必要です。つのクラス間で参照を設定しないようにしてください。片方のクラスがも片方のリソースを使用中に、そのもう片方のクラスが破棄される可能性があるためです。コードの使用例については、後述のサンプルに示します。ブロックを使用するといったやり方があります。ブロックでクリーンアップされます。DeliverExportFileといった、各関数のエントリポイントで使用してください。ブロックの用法を示したものです。リソースが初期化済みかどうかを示します。ここにコンストラクタロジックを追加します。クラスが初期化されていることを示すメンバ変数をセットします。インポートおよびエクスポートに使用するクリーンアップ用ジェネリック関数です。クリーンアップは、例外の発生するインターフェイスがインポート、エクスポートに関係なく、必ず呼び出されます。万一関数がタイムアウトした場合にも呼び出されます。ガーベージコレクションは非決定性であるため、クリーンアップが他のオブジェクトのインスタンスの存在に左右されることはないはずです。クリーンアップロジックを追加します。このクラスのメンバオブジェクトにアクセスすることができます。このクラスのアンマネージドリソースを対象にしたクリーンアップロジックを追加します。リソースを開放したことを示すメンバ変数をセットします。ここにインポートファイルを作成するロジックを追加します。インポート固有のクリーンアップを実行するコードを追加します。リソースを開放するクリーンアップコードを呼び出します。エクスポートの実行を初期化するコードを追加します。つのエントリをターゲットにエクスポートするコードを追加します。エクスポート固有のクリーンアップを実行するコードを追加します。リソースを開放するクリーンアップコードを呼び出します。:下記の翻訳は正式な対応内容ではありません。そのため、内容についてご参照いただく際は必ず原文と併用してご参考にとどめていただければと存じます。閑話休題なので、お暇なときにでも...。上でちょっとふれた元気になったことについてです。この間、息子が人生初めて漢字を書いたのですが(来年小学校、勉強をしないでかせいでガチャガチャを激しくやりたいお年頃)、それが「つき破壊りょく」という意味不明なものだったとちょっとこのブログで触れたのですが、何がどう「つき」で、(月?突き??)「破壊」で、「りょく」なのか不明だったので、今日責め立ててやったところ衝撃の事実が。これが件のつき破壊りょくです。意味はまったく判りませんが、とにかく何だかものすごい力強さを感じます。