2014-07-14 5 views
-1

로보트 팔을 프로그래밍하려고하는데 로봇이 여러 위치로 이동하고 특정 작업을 수행 할 수 있도록 콘솔 응용 프로그램으로 실행되는 여러 클래스가있는 C# 프로젝트가 있습니다. 로봇에는 비전 시스템이 없습니다.WPF - 무한 루프에서 실행

에 문제 : 나는 로봇이 특정 위치로 이동하는 데 사용할 WPF 응용 프로그램에서 kinect 센서를 사용하여 색상 및 심도 데이터를 추출합니다 (이 작업은 Kinect 자습서를 따릅니다). 유일한 문제는 클래스 및 함수 힙이있는 위에서 언급 한 별도의 콘솔 응용 프로그램이 있다는 것입니다. WPF 응용 프로그램에서 모든 센서 정보가 준비되면 이벤트가 시작됩니다. 내 전체 콘솔 응용 프로그램 코드를 WPF 프로젝트의 무한 while 루프에 배치 한 다음 센서 정보를 사용하여 로봇을 특정 위치로 이동 시키려고합니다.

기본적으로 내가 묻는 것은 WPF 응용 프로그램의 무한 루프 동안 코드를 어디에 둘 수 있습니까?

저는 완전히 WPF 응용 프로그램을 사용하는 방법에 대한 오해가있을 수 있다고 생각합니다. 어떤 도움을 주시면 대단히 감사하겠습니다.

+0

WPF에서 다른 작업을 원한다면 루프가 시작됩니다. –

+0

정말 필요한 것은 서비스라고 생각합니다. –

+0

콘솔 응용 프로그램을 라이브러리로 변경하고 WPF 응용 프로그램 내에서 라이브러리를 사용하는 것이 좋습니다. 그런 다음 특수 스레드 (루프 할 수 있음)에서 실행할 수 있습니다.나는이 디자인에 대해 걱정하고 있지만 실제 코드와 책임을 모른 채 어떤 세부 사항에 대해서도 조언하는 것은 불가능하다고 말해야한다. –

답변

1

WPF가 어떻게 작동해야하는지 오해하고 있다고 생각합니다. WPF는 모든 코드가 실행되는 구조가 아니며 시스템을 표시하는 계층으로 간주됩니다. 즉, "콘솔 응용 프로그램을 WPF에 삽입"하고 WPF에서 다리 작업을 수행하기보다는 WPF를 콘솔 응용 프로그램의 TOP에 배치해야합니다.

MVVM 패턴을 살펴보고 무슨 뜻인지 확인해보십시오.

"소개 MVVM하기"에 대한 빠른 구글이 참고로

http://www.infragistics.com/community/blogs/anand_raja/archive/2012/02/20/the-model-view-viewmodel-101-part-1.aspx을 준, 기존의 콘솔 코드는 모델 층에 빠질 것입니다. 아주 간단히

:

모델 - 시스템, 시스템이 표시되거나
뷰 모델을 사용하는 방법의 NO 논리 - 효과적으로 사용자가 시스템
보기와 상호 작용하는 방법을 정의하는 중간 사람 층 - 매우 얇은 구현 고유의 UI 버전입니다.

1

MVVM이 WPF의 기본 패턴이며 이러한 원칙을 사용하여 MVVM을 구현하는 것이 현명합니다.

코드를 마이그레이션하려는 경우 주 창 컨트롤의 코드 숨김 파일에 코드를 추가 할 수 있습니다. 이것은 WPF에서 나쁜 관행으로 간주되지만 가장 빠른 경로입니다.

이것은 winforms 프로그래밍과 비슷하므로 다른 코드를 호출 할 수있는 생성자가 있습니다.

무한 루프를보고있는 경우 비동기 대기 작업 방법 See MSDN에서이를 마무리 할 수 ​​있습니다. 그렇지 않으면 UI가 동일한 스레드에서 실행 중지됩니다.

희망이 있습니다.

관련 문제