我在后台(线程池)线程上运行以下代码时收到UnauthorizedAccessException(“无效的跨线程访问。”),这是预期的行为吗?
var uri = new Uri("resourcevault/images/defaultSearch.png", UriKind.Relative);
var info = Application.GetResourceStream(uri);
// this line throws exception....
this.defaultSearchImage = new BitmapImage();
答案 0 :(得分:2)
原因是您的后台线程无法直接用于更新UI。相反,您需要使用Dispatcher
将数据封送到UI线程。像这样:
var uri = new Uri("resourcevault/images/defaultSearch.png", UriKind.Relative);
var info = Application.GetResourceStream(uri);
Dispatcher.BeginInvoke(() => {
this.defaultSearchImage = new BitmapImage();
});