1920
2011-10-20 02:50:26
0
1 그러니까 실행한 MyProcess와 본 프로그램이 제각각 돌아가는걸 비동기식이라고 하는거라면 저도 그렇게 이해하고 있습니다.
그런데 두개가 따로 돌아가게 되면 서로 타임라인이 안맞게 되서 문제가 생긴다는거죠;
일반적인 표준 출력은 출력함수->출력버퍼->출력장치 순으로 진행이 됩니다.
이중에서 System.Diagnostics.Process가 프로세스의 출력을 가져오는 방식이 출력장치 대신 스트림에 밀어 넣고 나중에 스트림을 읽어 오느냐, 아니면 읽기 명령이 발생하면 출력 버퍼의 내용을 가져오느냐 확실하지 않다는거죠;
후자라면 비동기식에서 타임라인이 달라지면 문제가 생기니, 타임라인이 달라도 상관 없게 아예 계속해서 출력을 모아서 프로세스가 끝나면 출력이 끝났을테니 모인 데이터를 이용하자는 거죠.
반면 전자라면 스트림에 데이터가 쌓이기 전에 리드가 발생할 수 있으니, 프로세스가 정상적으로 수행이 끝날때까지 대기했다가 리드를 하고, 자원 해제를 리드 후에 해보는게 어떨까 하는겁니다.