mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-09 20:57:22 +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);
|
results.Add(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch(InvalidOperationException)
|
||||||
|
{
|
||||||
|
//The connection has closed, internal error of ExecuteReader()
|
||||||
|
//Not showing this exception to the users
|
||||||
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
results.Add(new Result
|
results.Add(new Result
|
||||||
{
|
{
|
||||||
// TODO: Localize the string
|
|
||||||
Title = ex.ToString(),
|
Title = ex.ToString(),
|
||||||
IcoPath = "Images\\WindowsIndexerImg.bmp"
|
IcoPath = "Images\\WindowsIndexerImg.bmp"
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -10,9 +10,12 @@ namespace Wox.Plugin.Indexer.SearchHelper
|
|||||||
public OleDbConnection conn;
|
public OleDbConnection conn;
|
||||||
public OleDbCommand command;
|
public OleDbCommand command;
|
||||||
public OleDbDataReader WDSResults;
|
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
|
// Generate SQL from our parameters, converting the userQuery from AQS->WHERE clause
|
||||||
string sqlQuery = queryHelper.GenerateSQLFromUserQuery(keyword);
|
string sqlQuery = queryHelper.GenerateSQLFromUserQuery(keyword);
|
||||||
|
|
||||||
@@ -34,12 +37,14 @@ namespace Wox.Plugin.Indexer.SearchHelper
|
|||||||
while (WDSResults.Read() && WDSResults.GetValue(0) != DBNull.Value)
|
while (WDSResults.Read() && WDSResults.GetValue(0) != DBNull.Value)
|
||||||
{
|
{
|
||||||
var result = new SearchResult { Path = WDSResults.GetString(0) };
|
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]
|
[STAThread]
|
||||||
public IEnumerable<SearchResult> Search(string keyword, string pattern = "*", int maxCount = 100)
|
public IEnumerable<SearchResult> Search(string keyword, string pattern = "*", int maxCount = 100)
|
||||||
{
|
{
|
||||||
ISearchQueryHelper queryHelper;
|
lock(_lock){
|
||||||
InitQueryHelper(out queryHelper, maxCount);
|
ISearchQueryHelper queryHelper;
|
||||||
ModifyQueryHelper(ref queryHelper, pattern);
|
InitQueryHelper(out queryHelper, maxCount);
|
||||||
return ExecuteQuery(queryHelper, keyword);
|
ModifyQueryHelper(ref queryHelper, pattern);
|
||||||
|
return ExecuteQuery(queryHelper, keyword);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user