2011-09-29 6 views
0

link 마틴에 의해 두 번째 대답은 발송자가 윈폼 응용 프로그램에서 사용할 수있는 방법에 대해 설명을 만들기 위해 WPF 발송자를 사용합니다. 이 link은 wpf 측면을 설명합니다. 그래서 내 질문은 - 우리 winforms 애플 리케이션에서 이것을 할 수 있습니까? 그렇지 않다면, 왜? 당신에게어떻게 다중 UI 스레드 윈폼 응용 프로그램

UPDATE 감사 :이 link 또한 그 아래 헹크에 의해 언급 된 여러 app.run 방법을 보여줍니다 발견했다. 그러나 wpf 디스패처는 사용하지 않습니다. Winforms (내 질문) 대 여러 app.runs에서 wpf 디스패처를 사용하는 사이에 성능 차이가 있는지 궁금하다

+0

큰 질문 : 왜? WinForms에서 App.Run을 사용하여 두 번째 스레드를 시작할 수는 있지만 결코 좋은 아이디어는 아닙니다. –

+0

내가 게시 한 링크에서 언급 한 것과 같은 이유. 여기에 붙여 넣기. "UI를 많이 사용하는 응용 프로그램 (예 : 약 10 개의 창에 실시간 몽타주 및 먼지 데이터가 표시된 거래 응용 프로그램)에서는 비주얼 생성 및 레이아웃 비용이 너무 높아져 단일 스레드가 계속 유지할 수 없게됩니다." – Gullu

답변

1

당신이 무엇이든 상관없이, 당신은 하나의 스레드 (UI 스레드)를 사용하여 창 (Winforms, WPF, 네이티브 코드). 당신은 당신이 필요로하는 모든 데이터 수집 및 준비 작업을하고 싶은대로하지만 여전히 업데이트를 수행하려면 UI 스레드를 사용해야합니다, 많은 작업자 스레드를 생성 할 수 있습니다. 이 작업을 수행하려면 Task 또는 BackgroundWorker 클래스를 살펴보십시오.

+1

내 질문에 게시 된 기사의 링크를 명확하게 각 창에 대한 별도의 메시지 펌프/UI 스레드를 만드는 방법을 데모를 제공한다. 그것은 하단의 코멘트에서 16 표와 많은 칭찬을 가지고있다. 그것은 당신이 "다중 UI 스레드"에 대한 구글 얻을 때 처음으로 기사입니다. 내가 여기서 무엇을 놓치고 있니? 덕분에 – Gullu

+0

@Gullu 내가보고, 그래서 당신은 창 당 하나 개의 메시지 루프를 원한다. 나는이 수준에서 기술을 혼합하는 것을 피할 것이다. WinForms와 WPF를 (어느 방향으로) 통합하는 데에는 많은 문제점이 있습니다.이 레벨에서 혼합하면 불필요한 복잡성이 생길 것입니다. 예, Application.Run (form)은 WinForms에서 작동하고, Dispatcher.Run()은 WPF에서 작동합니다. 두 경우 모두 메시지 루프가 작성되어 실행되어 질문을 만족시킵니다. –

관련 문제