Console.Write メソッドを呼び出すと予期せぬ例外が発生する


こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、Console.Write メソッドを呼び出した際に予期せぬ例外が発生する問題についてお知らせします。

 

現象

コンソール アプリケーションから標準出力への書込みを行う際に Console.Write メソッドや Console.WriteLine メソッドを使用しますが、メソッドを呼び出したタイミングで予期せず “System.IO.__Error.WinIOError” の例外が発生する場合があります。

この問題は、以下の条件を満たした場合に発生します。

  • Windows 10 バージョン 1507 (OS build 10240) の環境
  • コンソール アプリケーションが、プロセス用の新しいウィンドウを持たずに開始された場合

 

上記、プロセス用の新しいウィンドウを作成せずにプロセスを起動するには、

.NET Framework アプリケーションでは ProcessStartInfo.CreateNoWindow プロパティに true をセットします。

Win32 アプリケーションでは CreateProcess 関数の引数の dwCreationFlags に CREATE_NO_WINDOW をセットします。

 

原因

本現象は、Windows 10 における不具合です。

 

対処方法

Windows 10 バージョン 1511 (OS build 10586) 以降では修正されています。

Windows 10 バージョン 1511 へのアップデート方法については、下記のページをご参照ください。

Windows 10 の 11 月の更新プログラム: FAQ
<http://windows.microsoft.com/ja-jp/windows-10/windows-update-faq>

 

ただし、Windows 10 Enterprise 2015 LTSB をご利用のお客様向けには、現時点ではアップデートは用意されていません。

次期メジャー アップデートにて修正させていただく予定となっています。

 

対象製品

Windows 10

 

参考情報

ご参考までに、今回ご案内した情報に関するドキュメントを以下にご紹介します。

Console.Write メソッド
<https://msdn.microsoft.com/ja-jp/library/system.console.write.aspx>

Console.WriteLine メソッド
<https://msdn.microsoft.com/ja-jp/library/system.console.writeline.aspx>

ProcessStartInfo.CreateNoWindow プロパティ
<https://msdn.microsoft.com/ja-jp/library/system.diagnostics.processstartinfo.createnowindow.aspx>

CreateProcess
<https://msdn.microsoft.com/ja-jp/library/cc429066.aspx>