diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Indexer/Main.cs b/src/modules/launcher/Plugins/Wox.Plugin.Indexer/Main.cs index 8d6af797e9..b547815e76 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Indexer/Main.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Indexer/Main.cs @@ -87,11 +87,15 @@ namespace Wox.Plugin.Indexer results.Add(r); } } + catch(InvalidOperationException) + { + //The connection has closed, internal error of ExecuteReader() + //Not showing this exception to the users + } catch (Exception ex) { results.Add(new Result { - // TODO: Localize the string Title = ex.ToString(), IcoPath = "Images\\WindowsIndexerImg.bmp" }); diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs b/src/modules/launcher/Plugins/Wox.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs index 84f81b1a95..863a717925 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Indexer/SearchHelper/WindowsSearchAPI.cs @@ -10,9 +10,12 @@ namespace Wox.Plugin.Indexer.SearchHelper public OleDbConnection conn; public OleDbCommand command; public OleDbDataReader WDSResults; + private readonly object _lock = new object(); + - public IEnumerable ExecuteQuery(ISearchQueryHelper queryHelper, string keyword) + public List ExecuteQuery(ISearchQueryHelper queryHelper, string keyword) { + List _Result = new List(); // Generate SQL from our parameters, converting the userQuery from AQS->WHERE clause string sqlQuery = queryHelper.GenerateSQLFromUserQuery(keyword); @@ -34,12 +37,14 @@ namespace Wox.Plugin.Indexer.SearchHelper while (WDSResults.Read() && WDSResults.GetValue(0) != DBNull.Value) { var result = new SearchResult { Path = WDSResults.GetString(0) }; - yield return result; + _Result.Add(result); } } } } } + + return _Result; } @@ -90,10 +95,12 @@ namespace Wox.Plugin.Indexer.SearchHelper [STAThread] public IEnumerable Search(string keyword, string pattern = "*", int maxCount = 100) { - ISearchQueryHelper queryHelper; - InitQueryHelper(out queryHelper, maxCount); - ModifyQueryHelper(ref queryHelper, pattern); - return ExecuteQuery(queryHelper, keyword); + lock(_lock){ + ISearchQueryHelper queryHelper; + InitQueryHelper(out queryHelper, maxCount); + ModifyQueryHelper(ref queryHelper, pattern); + return ExecuteQuery(queryHelper, keyword); + } } } }