public void Update() { _searchItems.Clear(); var classNames = ClassNames.ToList(); var i = 0; var n = classNames.Count; var progress = new Progress <ProgressInfo>(); TaskStarted?.Invoke(progress); var progressInterface = (IProgress <ProgressInfo>)progress; _searchItems.AddRange( classNames .Select( name => { var subKey = _clsidKey.OpenSubKey(name); var regClass = subKey != default ? CreateSearchItem(new RegistryClass(subKey)) : default; progressInterface.Report(new ProgressInfo("Load Classes", ++i, n)); return(regClass); } ) ); OnPropertyChanged(nameof(Items)); }