private VariableMembers GetVariables(IEnumerable<FileInfo> files) { var variableMembers = new VariableMembers(); // Changed all of this to a single statement var results = from file in files where IsFileValid(file) select GetVariableMembers(file.FullName).ContinueWith(var => { variableMembers.Functions.AddRange(var.Result.Structures.ToList()); variableMembers.Structures.AddRange(var.Result.Structures.ToList()); variableMembers.Fields.AddRange(var.Result.Fields.ToList()); variableMembers.Signals.AddRange(var.Result.Signals.ToList()); variableMembers.Enums.AddRange(var.Result.Enums.ToList()); variableMembers.Positions.AddRange(var.Result.Positions.ToList()); }); Task.WaitAll(results.ToArray()); RaisePropertyChanged("Structures"); RaisePropertyChanged("Functions"); RaisePropertyChanged("Fields"); RaisePropertyChanged("Files"); RaisePropertyChanged("Positions"); BWProgressVisibility = Visibility.Collapsed; var instance = ServiceLocator.Current.GetInstance<MainViewModel>(); instance.EnableIO = File.Exists(_kukaCon); IOModel = new IOViewModel(_kukaCon); return variableMembers; }
private Task<VariableMembers> GetVariableMembers(string filename) { var task = Task.Factory.StartNew(() => { var result = new VariableMembers(); result.FindVariables(filename, this); return result; }); return task; }