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;
        }