Tôi có một cuộc gọi đến một phương thức trả về số UIElement
mà tôi gọi bằng cách sử dụng Dispatcher
, bên dưới là mã.Giá trị trả về của WPF Gọi giá trị trả lại luôn là số
Tuy nhiên giá trị trả về của lệnh gọi Dispatcher
luôn là NULL, bất kỳ ý tưởng nào?
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
var slides = (IList<UIElement>)e.Argument;
var bmpSlides = new List<UIElement>();
var imageService = new ImageService();
int count = 0;
foreach (UIElement slide in slides)
{
object retVal = slide.Dispatcher.Invoke(
new ThreadStart(() => imageService.GenerateProxyImage(slide)));
bmpSlides.Add(imageService.GenerateProxyImage(slide));
_backgroundWorker.ReportProgress(count/100 * slides.Count);
count++;
}
e.Result = bmpSlides;
}
Điều này sẽ hiệu quả, nhưng có vẻ như sạch hơn với tôi khi sử dụng Func như được mô tả trong các câu trả lời khác. –
Vâng thực sự Dispatcher.Invoke chờ đợi cho các chủ đề để hoàn thành, Dispatcher.BeginInvoke không ... – Zenuka