2014-03-04 2 views
-3

저는 이전에 Windows Phone 7 용 앱인 System.Threading.Tasks.3.0.1 library을 사용해 왔지만 Windows 8에서 작동하는 새로운 업데이트가없는 것 같습니다. 그래서 현재 내장되어 있는지 또는 무엇인지 확실하지 않습니다.병렬?

이 내가

 Parallel.Invoke(() => Dispose()); 


public void Dispose() 
    { 
     if (photoCamera != null) 
     { 
      photoCamera.Dispose(); 
      photoCamera.Initialized -= PhotoCameraOnInitialized; 
      photoCamera.AutoFocusCompleted -= PhotoCameraOnAutoFocusCompleted; 
      photoCamera = null; 


      recScanArea.Visibility = Visibility.Collapsed; 

     } 
    } 
+0

평행 폐기를 호출의 포인트는 무엇 내가 먼저 시도이를 줘야 할 것()? – Aybe

+0

내 앱에서 파노라마보기가 있었기 때문에 바코드 스캐너보기가있는보기가없고 바코드 스캐너보기가없는보기가 있고 바코드 스캐너가없는보기가없는 경우 2를 바꿔 바코드 스캐너를 끄면 지연이 발생하여 좋지 않은 경험을했습니다. , 병렬을 사용하여 다른보기로 전환 한 다음 병렬로 바코드 스캐너 코드를 차단할 수있었습니다. – chobo2

+1

''사용 중 '으로 호출을 감싸서 가능한 한 일찍 처리하지 않으면 어떨까요? – Aybe

답변

0

주로 모든 것이 TPL 라이브러리와 WP8에 비동기의 사용과 이동 도서관과는 데 사용하는 것입니다. 그것은 Parallel class처럼 보이는

Take a look at this Q/A on this very issue.

는 PCL 라이브러리에서 사용할 수 있습니다 그래서 당신이 그것을 찾거나 WP8 응용 프로그램에 추가 할 수 있어야한다고 생각합니다.

0

가장 좋은 방법은 .NET Framework 4.5에서 작업을 구현하는 가장 좋은 방법을 제시하는 async/await를 사용하는 것입니다.

그래서 저는 this link을 추천합니다.

0

백그라운드 스레드에서 일부 코드 만 실행하려는 경우 병렬 처리가 과도합니다. 모바일 장치와 같은 "소형"대상은 완전한 병렬 처리를 지원하지 않습니다.

먼저 으로 의심됩니다. 처음 코드가 방금 Dispose을 호출 한 것과 다른 것은 아닙니다. 병렬 호출은 "작업자"중 하나 인 호출 스레드를 포함합니다. 그것은 이 아니며은 다른 작업을 수행하는 호출 스레드를 확보합니다. 또한 Visibility을 설정하고 PhotoCamera에 액세스하는 것은 UI 스레드에서 수행해야합니다. 그래서, 당신의 "병렬"코드는 사실 전혀 병렬이 아니었을 것입니다. 당신이 백그라운드 스레드에서 Dispose을 실행할 것을 절대적으로 확신하는 경우

Dispose(); 

, 당신이 사용할 수있는 Task.Run :

await Task.Run(() => Dispose());