C# 以一次性模式绑定失败

C# 以一次性模式绑定失败,c#,wpf,multithreading,C#,Wpf,Multithreading,我需要关于绑定模式的帮助 <Image Source="{Binding Icon,Mode=OneTime}"/> 这是ObservableCollection的一部分,它链接到Listbox如果使用一次,get调用一次,然后启动线程,它返回null 您的一次性用完了,结束。一次就是一次。不是“一次,以后如果它改变了,再来一次” 没有什么是不频繁地侦听以后发生的属性更改事件,因为您告诉它只获取一次,而从不侦听属性更改 按照编写代码的方式,线程可能会启动两次(或更多),因为您没有任

我需要关于绑定模式的帮助

<Image Source="{Binding Icon,Mode=OneTime}"/>

这是ObservableCollection的一部分,它链接到Listbox

如果使用一次
get
调用一次,然后启动线程,它返回null

您的
一次性
用完了,结束。一次就是一次。不是“一次,以后如果它改变了,再来一次”

没有什么是不频繁地侦听以后发生的属性更改事件,因为您告诉它只获取一次,而从不侦听属性更改

按照编写代码的方式,线程可能会启动两次(或更多),因为您没有任何防范措施。如果在有人再次调用getter之前第一个线程还没有完成,那么您将获得另一个线程。您真的需要另一个线程来加载该图像吗?您最好使用async/await而不是新线程

此外,无论值是否更改,setter始终在PropertyChanged上启动,因为

if (icon != value)
    icon = value; OnPropertyChanged("Icon");
这和

if (icon != value)
{
    icon = value; 
    OnPropertyChanged("Icon");
}

感谢您的解释和捕捉丢失的括号!SHGetFileInfo对于网络链接来说非常慢,所以我想我需要线程。如果(ExtractionStarted)返回,有什么比在进入线程之前拥有更好的吗;else{ExtractionStarted=true;return;}
if (icon != value)
{
    icon = value; 
    OnPropertyChanged("Icon");
}