C# 在异步调用中读取Writeablebitmap

C# 在异步调用中读取Writeablebitmap,c#,wpf,multithreading,dispatcher,writeablebitmap,C#,Wpf,Multithreading,Dispatcher,Writeablebitmap,我想将从UI(WPF)生成的writeablebitmap对象传递到异步调用中,但不想更新主线程的writeablebitmap。我只想读取一些属性,例如像素高度和宽度。在新线程中,我无法访问writeablebitmap的任何属性,因为它认为我试图弄乱主线程的writeablebitmap属性。我收到异常:“调用线程无法访问此对象,因为另一个线程拥有它。”其他线程中的一些响应建议他们使用Dispatcher.BeginInvoke,但如果我只想从中读取可写位图对象的副本,这是否必要?在冻结时会

我想将从UI(WPF)生成的writeablebitmap对象传递到异步调用中,但不想更新主线程的writeablebitmap。我只想读取一些属性,例如像素高度和宽度。在新线程中,我无法访问writeablebitmap的任何属性,因为它认为我试图弄乱主线程的writeablebitmap属性。我收到异常:“调用线程无法访问此对象,因为另一个线程拥有它。”其他线程中的一些响应建议他们使用
Dispatcher.BeginInvoke
,但如果我只想从中读取可写位图对象的副本,这是否必要?

在冻结时会丢失它们的属性。尝试调用可写位图

否则,您可以使用创建克隆,然后冻结克隆,并在冻结克隆时丢失克隆。尝试调用可写位图


否则,您可以通过使用创建克隆,然后冻结克隆

Freezables
在冻结克隆时失去其线程亲和力。尝试调用
可写位图中的
.Freeze()
。否则,您可以使用
.clone()
创建克隆,然后冻结克隆。冻结克隆正是我想要的,非常感谢!如果我的答案对你有用,请将其标记为已接受。你=)
Freezables
冻结时,它们的线程关联性将丢失。尝试调用
可写位图中的
.Freeze()
。否则,您可以使用
.clone()
创建克隆,然后冻结克隆。冻结克隆正是我想要的,非常感谢!如果我的回答有用,请将其标记为已接受(您=)