3

저는 증강 현실 이미지 프로세싱을 할 수있는 Windows Phone 7+ 용 사용자 정의 컨트롤을 구축하고 있습니다. 이 컨트롤은 실용적으로 (앱을 실행할 때) 훌륭하게 작동하지만 이미지가 별도의 스레드에서 실행되기 때문에 블렌드 또는 Visual Studio 디자이너에서 페이지를 열려고 할 때 중단됩니다.Silverlight 사용자 지정 컨트롤에 배경 스레드를 추가하려면 어떻게합니까?

여기에 (기본적으로 http://msdn.microsoft.com/en-us/library/hh202982(v=vs.92).aspx에서 촬영) 내가 실행하는 데 노력하고있어 스레드의 예 :

public override void OnApplyTemplate() 
{ 
    // assigning template stuff, initializing my camera 

    _myManualResetEvent = new ManualResetEvent(true); 
    _myCameraProcessingThread = new System.Threading.Thread(ProcessingMethod); 
    _myCameraProcessingThread.Start(); 
} 

void ProcessingMethod() 
{ 
    int[] myBuffer = new int[640 * 480]; 
    while(_someCondition) 
    { 
     _myManualResetEvent.WaitOne(); 
     _myCamera.GetPreviewBufferArgb32(myBuffer); 
     // do my processing stuff 
     _myManualResetEvent.Set(); 
    } 
} 

이것은 혼합에서 끊임없이 사랑 도대체 나누기. 이유를 알고 싶습니다.

답변

5

OnApplyTemplate 메서드에서 실행 시간이 많은 것처럼 보입니다.

Blend 또는 Visual Studio에서 컨트롤의 디자인보기를 인스턴스화 할 때 호출됩니다.

if (!DesignMode) 
{ 
    _myManualResetEvent = new ManualResetEvent(true); 
    _myCameraProcessingThread = new System.Threading.Thread(ProcessingMethod); 
    _myCameraProcessingThread.Start(); 
} 

을하거나 응용 프로그램이 실제로 실행되는 경우에만 호출되는 방법/이벤트 처리기에이 코드를 이동 :

당신은 당신이 디자인 모드에있는 경우 DesignMode 사용하여 확인해야 하나.

+0

감사! 그게 내 문제 였어. 후속 조치를 요청할 수 있다면 ... 애플리케이션이 실행될 때 어떤 메소드/이벤트 핸들러가 호출 될까요? – MatthiasS

+0

@MatthiasS - 하나의 'Loaded'이벤트가 있습니다. Silverlight 이벤트에 대한 자세한 내용은 [이 페이지] (http://msdn.microsoft.com/en-us/library/cc189018(v=vil95.aspx))를 확인하십시오. – ChrisF

관련 문제