2016-08-11 3 views
0

Windows 서비스로 실행되는 응용 프로그램이 있습니다. 거기에 방법의Windows 서비스에서 콘솔에 쓸 때 ArgumentOutOfRangeException이 발생했습니다.

하나는 다음과 같이이다 : 나는 널 (null)를 확인하고 콘솔로 점을 쓰기에 도달하지 않는 동안

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

모든 것이 괜찮습니다. 배치가 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

관련 문제