2006年11月29日

XmlSerializer.Deserialize()での"タイムアウト"エラー、意外な解決法?

.Net、Windowsアプリにて、アプリケーションの設定をXmlSerializerを使ってXMLファイルに持っている。
起動一発目に、XmlSerializer.Deserialize()で設定を読み込むのだが、ある時から、なかなか設定読み込みが終わらず、あげくの果てに「タイムアウト」エラーが出る、というよくわからない現象が発生するようになった。

Microsoftのサポート情報には、比較的簡単にたどり着けたが、ここからが問題。

Microsoftさんが上記で示している回避策の1、2は、両方とも、普通ならイヤだと思う。
.Netでプリコンパイルなんてやったことがないから、どんなリスクがあるのかよくわからんし、コンソールでの日本語入力を禁止するなんて、他に迷惑をかけるようなことはでけん。

ということで、ほかの策を練る。
アプリケーションがXmlSerializerを使う前に、"conime.exe"とやらが起動してりゃいいんだろ!と、以下の方法で対処した。

アプリケーション実行ファイルをバッチファイルから呼び出させる。だけ。

タスクマネージャで見てると、バッチファイルが実行されると、"conime.exe"君が起動する模様。
なので、必ずバッチファイルからアプリを起動すれば、m"conime.exe"が起動している状態で、XmlSerializer.Deserialize()が呼ばれるので、デッドロックは起こらないはずはず!

とりあえず、こうしてから再現はしてないが、様子見。

0 件のコメント: