mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-04 18:26:39 +02:00
single thread execution of the indexer plugin and InvalidOperationException due to connection being closed on ExecuteReader, handled separately
This commit is contained in:
@@ -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"
|
||||
});
|
||||
|
||||
@@ -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<SearchResult> ExecuteQuery(ISearchQueryHelper queryHelper, string keyword)
|
||||
public List<SearchResult> ExecuteQuery(ISearchQueryHelper queryHelper, string keyword)
|
||||
{
|
||||
List<SearchResult> _Result = new List<SearchResult>();
|
||||
// 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<SearchResult> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user