작업의 충돌 : 나는이 일을하고 때Parallel.Foreach 내가 같이 병렬 실행에 클라우드 이미지를 업로드하고
// Make a TaskFactory that will use the UI thread's context
var uiFactory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
Parallel.ForEach(FinalFileNames,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
path =>
{
count++;
/* Calculate percentage of upload done */
double iPercentDone = (int)(((float)count/iTotalFiles) * 100);
// Send the progress report to the UI thread.
uiFactory.StartNew(() =>
UploadProgress.Value = iPercentDone;
LblProgress.Content = count.ToString(CultureInfo.InvariantCulture)
+ " file(s) uploaded from " + iTotalFiles +
" file(s)";
}
});
내가 직면 오전 문제의 UI가 차단됩니다. 그 이유는 같은 스레드에서 작동하는 것 같습니다.
"Task.Factory.New"에서이 Parallel.ForEach를 랩핑하면 해당 요구 사항이 아닌 비동기 호출이 발생합니다.
알려주십시오. UI 블록 문제를 해결하고 비동기 호출을 수행하지 못하게하려면 어떻게합니까?
'uiFactory' 란 무엇입니까? –
Application.DoEvents()를 시도한 적이 있습니까? 모든 foreach 후? – erem
'Parallel.ForEach'는 이미지 업로드와 같은 IO 바인딩 작업을위한 것이 아닙니다. 비슷한 질문 : http://adackoverflow.com/q/22403856/1768303 – Noseratio