2012-05-24 2 views
0

콘솔 응용 프로그램을 Windows Forms 응용 프로그램과 DLL로 변환합니다. Windows Forms 응용 프로그램은 BackgroundWorker를 사용하여 DLL에 계산 작업이 많은 작업을 수행하도록합니다.콘솔 응용 프로그램을 BackgroundWorker를 사용하는 GUI로 변환

콘솔 응용 프로그램에서 남은 DLL은 여전히 ​​Console.WriteLine() 문으로 흩어져 있습니다. Windows Form에서 TextBox으로 콘솔에 인쇄 된 내용을 보내고 싶습니다. 이상적으로, 나는 폼 초기화 과정에서 DLL의 스트림을 텍스트 박스에 연결하여 끝내고 싶다. 나는이 스레드가 BackgroundWorker로 안전하지 않을 수도 있다고 우려하고있다.

내가 찾은 가장 좋은 방법은 DLL에 Trace.WriteLine()Console.WriteLine()을 변경 한 다음 Trace listener to write to a text box (WPF application)의 접근 방식을 따라하지만 난 여전히있는 BackgroundWorker에 문제가 기존 문자열에 텍스트를 추가 너무 치열 아니라고하는 것입니다 (A가 많은 텍스트와 IMO 문자열은 많은 텍스트가 연결될 수 있도록 최적화되거나 최적화되지 않았습니다.

이전 콘솔 출력을 BackgroundWorker로 안전 할 수있는 텍스트 상자로 인쇄하는 가장 좋은 방법은 무엇입니까?

+0

생성 된대로 인쇄해야합니까, 아니면 결국 한 번에 모두 인쇄 할 수 있습니까? 그리고 스레드 간 호출의 메커니즘이나 코드를 변경하지 않고'Console.WriteLine' 출력을 캡쳐하는 것에 더 관심이있는 질문은 무엇입니까? –

+0

'ReportProgress'이벤트가 발생할 때 출력이 생성되거나 (더 합리적으로) 출력되도록 인쇄하고 싶습니다. – chessofnerd

답변

2

다음 블로그 게시물 당신을 위해 무엇을 찾고있는 사람이 될 수 있습니다

http://saezndaree.wordpress.com/2009/03/29/how-to-redirect-the-consoles-output-to-a-textbox-in-c/

나는 당신이 요구하는지 정확히 설명 생각합니다. 기본적으로 Console.SetOut을 사용하여 콘솔 출력을 사용자 자신의 스트림 작성기로 리디렉션합니다. 스레드 문제 처리에 대한 몇 가지 추가 정보는 게시물 아래의 설명을 읽으십시오.

+0

이렇게했습니다! 고마워요! – chessofnerd

관련 문제