我有同樣的問題在this question指出,問題的回答,答案也似乎在我的問題(理論上)的工作。但我不知道如何實施the answer provided。如何使用調度程序來加載多個圖像
這表明,加載多個圖像時,我批他們,只是做了一些,然後使用調度員開始對未來幾年的工作。
我試圖編寫一個名爲LoadNextFive(int startIndex)
的函數,並且在函數結尾處它自己像這樣調用它:this.Dispatcher.BeginInvoke(() => { LoadNextFive(startIndex + 5); });
,但它似乎不起作用。我是否使用調度程序錯誤或者我是否執行了錯誤的答案?
- 編輯 - 我目前試圖在當時只加載1個圖像。
public void LoadNextImage()
{
if(m_enumerator.MoveNext())
{
if (!m_bitmapSources.ContainsKey(m_enumerator.Current))
{
ZipEntry imageEntry = m_zip.GetEntry(m_enumerator.Current);
using (Stream imageStream = m_zip.GetInputStream(imageEntry))
{
BitmapImage source = new BitmapImage();
source.SetSource(imageStream);
m_bitmapSources.Add(m_enumerator.Current, source);
}
m_dispatcher.BeginInvoke(() => LoadingTemplate.ChangeText(this, "")); //change loadingtext (provides % in future) and it calls this function again
}
else
{
m_dispatcher.BeginInvoke(() => LoadNextImage());
}
}else{
//starts after every image is done loading
LoadPages();
LoadMonths();
OnLoadComplete(new EventArgs());
}
}
你可以提供其餘的LoadNextFive方法嗎? –