Adsense_top

2014年8月22日金曜日

Adobe Reader から印刷出来なくなった.. Microsoftの例のバッチが原因?


Adobe ReaderでPDFファイルを開き印刷しようとすると、「動作を停止しました」と出て落ちてしまうと相談を受けた。

Adobe Readerの、更新や修復をしても改善しなかった、ので再度詳しく状況を聞いていみると、以下の様な状況だった。

・ある特定の人から送られてきたPDFファイルのみ症状が発生する。
・他の人のPCでは印刷できる。
・以前は、その人から送られてきたPDFは印刷できた。
・今月(8月)の中旬に送られてきたPDFが印刷できない。

ココまで聞いて、あることが頭に浮かんだので、コントロールパネルから「プログラムと機能」をみてもらった。
気がついたと思うけれど、「もしかして、今話題のWinodwsのバッチ」が原因かもおもったのです。
フォントに関係にありそうな感じのレジストリの内容が、対応策のページに書かれていたのを覚えていたので・・
症状が発症した日時的にも近いのもあり、もしやと思い調べてもらうと、「KB2982791」「KB2970228 」が、「インストールされた更新プログラム」の中にありましたので、アンインストールを薦めました。

アンインストール後、印刷出来なかったPDFをAdobe Readerから印刷を試してもらった結果、見事に印刷出来るように成りました。

100パーセントWindowsのバッチが原因とは決めつけるだけの根拠は有りませんが、心象的には99パーセント、バッチが原因ではと思っています。

もし、同様な症状の方がいましたら試してみたください。


Microsoftもバッチの削除を推奨しているようですので、印刷に問題がなくてもバッチは削除したほうが良いと思いますけど・・・

問題のバッチ関連の情報ページです。参考にして下さい。

【リリース後に確認された問題】2014 年 8 月 13 日公開の更新プログラムの適用により問題が発生する場合がある
http://blogs.technet.com/b/jpsecurity/archive/2014/08/16/2982791-knownissue3.aspx

2014年8月14日木曜日

C# 動的に配置したコントロールの削除

動的にコントロールの追加と削除を繰り返していたら、例外が発生したので調べてみました。

同じ事をしないようにメモっておきます。

まず表示された例外は以下の様なものでした。
------------
型 'System.ComponentModel.Win32Exception' のハンドルされていない例外が System.Windows.Forms.dll で発生しました

追加情報:ウィンドウのハンドルを作成中にエラーが発生しました。
------------

削除は以下のように書いていました。

panel1.Controls.Clear();

この適当な書き方が悪かったようで、正しくコントロールによって使用されているリソースを開放する必要がありました。

正しくは以下のように書くべきでした。

for(int i = panel1.Controls.Count - 1; 0 <= i; i--) {
    panel1.Controls[i].Dispose();
}

※コレクションの後ろ側から開放している点が重要

結構な回数繰り返さないと発生しないので、例外も発生せず問題化していないプログラムも多いかも・・