ラベル .NET全般 の投稿を表示しています。 すべての投稿を表示
ラベル .NET全般 の投稿を表示しています。 すべての投稿を表示

2010年9月9日木曜日

Process.WaitForExit()は本当の意味で無期限待機しない

MSDNを見ると、Process.WaitForExitメソッドの引数無しバージョンの説明は次のようになっています。 
関連付けられたプロセスが終了するまで無期限に待機するように Process コンポーネントに指示します。
しかし、実際の動作はProcess.WaitForExit(Timeout.Infinite)と同じですので注意しましょう。
要するに、0x7FFFFFFFミリ秒後(25日後くらい)に、プロセスが終了していなくてもリターンします。(詳細はこちらを参照)

確かに、プログラム的には無期限ともいえますが、説明が紛らわしいですね。
戻り値がvoidなのもいやらしい。

サーバーでプロセスの異常終了を監視してメール通知するプログラムを作ったのですが、
再起動メールが来て焦ってログ確認したら問題無し。原因はこれでした。

2010年1月6日水曜日

Web Service ClientがC:\Windows\Tempに書き込みできない例外

Web参照を含むWebサービスクライアントを、Visual Studioでビルドしたときにできる [DllName].serializers.dll をデプロイに含める。
そうしないと、実行時にC:\Windows\Tempに動的にファイルを作成しようとして、書き込みアクセス権がないユーザの場合に例外発生。

詳細は↓参照。ジャストミートな内容。
http://blogs.msdn.com/andreal/archive/2009/04/18/could-not-find-file-c-windows-temp-dll.aspx