2016-08-11 14 views
0

Windowsサービスとして起動されるアプリケーションがあります。Windowsサービスからコンソールに書き込むときにArgumentOutOfRangeExceptionが発生する

public void Process(ICmKofaxBatch batch) 
{ 
    if (batch == null) 
    { 
     Console.Write("."); 
     return; 
    } 
    // logic of method 
} 

私がnullかどうかを確認、コンソールにドットを書き到達しない間、すべては大丈夫です:

その方法の一つは、このようなものです。バッチがnullの場合、例外が発生する

System.ArgumentOutOfRangeException: Count cannot be less than zero. 
Parameter name: count 
    at System.String.CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIndex, Int32 count) 
    at System.IO.StreamWriter.Write(String value) 
    at System.IO.TextWriter.SyncTextWriter.Write(String value) 
    at System.Console.Write(String value) 
    at MyCompany.CustomerCompany.Eds.Splitter.Services.Implementations.Application.ApplicationService.Process(ICmKofaxBatch batch) in d:\MyCompany\AI\src\Kofax\Custom Modules\MyCompany.CustomerCompany.Eds.Splitter\ApplicationService.cs:line 56 
    at MyCompany.CustomerCompany.Eds.Splitter.SplitterCustomModule.Process(ICmKofaxBatch batch) in d:\MyCompany\AI\src\Kofax\Custom Modules\MyCompany.CustomerCompany.Eds.Splitter\SplitterCustomModule.cs:line 54 

この例外はどのような場合に発生する可能性がありますか?私はWindowsサービスからコンソールに何かを出力しようとすると、何もしないと思った。

答えて

0

Windowsサービスでは、コンソールに書き込む機能はありません。イベントログまたはログファイルに書き込むことをお勧めします。

+0

私はコンソールに書き込む能力がないことを知っています。しかし、Console.Writeへの呼び出しは例外ではなくてはなりません。 Console.Writeはstdoutに書き込み、サービスアプリケーションの場合は定義されていないので、Console.Writeはどこにも書きません。 – rpeshkov

+0

待って、あなたはハンマーで頭に自分自身を打つことが傷ついてはならないと主張している? – Will

関連する問題