// May be called from any thread public IList <FunctionInfo> GetFunctionInfos() { lock (_workbookRegistrationInfos) { var workbookInfos = _workbookRegistrationInfos.Values.SelectMany(ri => ri.GetFunctionInfos()).ToList(); var xmlInfos = _xmlProvider.GetFunctionInfos(); return(workbookInfos.Concat(xmlInfos).ToList()); } }
// May be called from any thread public IList <FunctionInfo> GetFunctionInfos() { IList <FunctionInfo> excelDnaInfos; lock (_xllRegistrationInfos) { excelDnaInfos = _xllRegistrationInfos.Values.SelectMany(ri => ri.GetFunctionInfos()).ToList(); } Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos Begin"); foreach (var info in excelDnaInfos) { Logger.Provider.Verbose($"\t{info.Name}({info.ArgumentList.Count}) - {info.Description} "); } var xmlInfos = _xmlProvider.GetFunctionInfos(); var allInfos = excelDnaInfos.Concat(xmlInfos).ToList(); Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos End"); return(allInfos); }
// May be called from any thread public IList <FunctionInfo> GetFunctionInfos() { IList <FunctionInfo> excelDnaInfos; Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos"); lock (_xllRegistrationInfos) { Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos - inside lock"); excelDnaInfos = _xllRegistrationInfos.Values.SelectMany(ri => ri.GetFunctionInfos()).ToList(); } Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos - after lock"); foreach (var info in excelDnaInfos) { Logger.Provider.Verbose(string.Format("\t{0}({1}) - {2} ", info.Name, info.ArgumentList.Count, info.Description)); } var xmlInfos = _xmlProvider.GetFunctionInfos(); var allInfos = excelDnaInfos.Concat(xmlInfos).ToList(); Logger.Provider.Verbose("ExcelDnaIntelliSenseProvider.GetFunctionInfos End"); return(allInfos); }