Refactoring DelayInvoke

In MainWindow.xaml.cs, the reference of originQuery, lastQuery and
tbQuery.Text are same, so remove originQuery is fine.
This commit is contained in:
bao-qian 2015-10-30 23:03:16 +00:00
parent 2dfcee6b25
commit 26a6264039
6 changed files with 18 additions and 26 deletions

View File

@ -12,20 +12,13 @@ namespace Wox
new Dictionary<string, DispatcherTimer>();
private static readonly object syncRoot = new object();
public static string DelayInvoke(this Dispatcher dispatcher, string namedInvocation,
Action<string> action, TimeSpan delay,
DispatcherPriority priority = DispatcherPriority.Normal)
{
return DelayInvoke(dispatcher, namedInvocation, action, delay, string.Empty, priority);
}
public static string DelayInvoke(this Dispatcher dispatcher, string namedInvocation,
Action<string> action, TimeSpan delay, string arg,
public static void DelayInvoke(this Dispatcher dispatcher, string namedInvocation,
Action action, TimeSpan delay,
DispatcherPriority priority = DispatcherPriority.Normal)
{
lock (syncRoot)
{
if (String.IsNullOrEmpty(namedInvocation))
if (string.IsNullOrEmpty(namedInvocation))
{
namedInvocation = Guid.NewGuid().ToString();
}
@ -36,11 +29,10 @@ namespace Wox
var timer = new DispatcherTimer(delay, priority, (s, e) =>
{
RemoveTimer(namedInvocation);
action(arg);
action();
}, dispatcher);
timer.Start();
timers.Add(namedInvocation, timer);
return namedInvocation;
}
}

View File

@ -53,7 +53,7 @@ namespace Wox
}
Dispatcher.DelayInvoke("HotkeyAvailabilityTest",
o =>
() =>
{
SetHotkey(hotkeyModel);
},

View File

@ -457,27 +457,27 @@ namespace Wox
int searchDelay = GetSearchDelay(lastQuery);
Dispatcher.DelayInvoke("UpdateSearch",
o =>
() =>
{
Dispatcher.DelayInvoke("ClearResults", i =>
Dispatcher.DelayInvoke("ClearResults", () =>
{
// first try to use clear method inside pnlResult, which is more closer to the add new results
// and this will not bring splash issues.After waiting 100ms, if there still no results added, we
// must clear the result. otherwise, it will be confused why the query changed, but the results
// didn't.
if (pnlResult.Dirty) pnlResult.Clear();
}, TimeSpan.FromMilliseconds(100), null);
}, TimeSpan.FromMilliseconds(100));
queryHasReturn = false;
Query query = new Query(lastQuery);
query.IsIntantQuery = searchDelay == 0;
Query(query);
Dispatcher.DelayInvoke("ShowProgressbar", originQuery =>
Dispatcher.DelayInvoke("ShowProgressbar", () =>
{
if (!queryHasReturn && originQuery == tbQuery.Text && !string.IsNullOrEmpty(lastQuery))
if (!queryHasReturn && !string.IsNullOrEmpty(lastQuery))
{
StartProgress();
}
}, TimeSpan.FromMilliseconds(150), tbQuery.Text);
}, TimeSpan.FromMilliseconds(150));
//reset query history index after user start new query
ResetQueryHistoryIndex();
}, TimeSpan.FromMilliseconds(searchDelay));

View File

@ -71,7 +71,7 @@ namespace Wox {
Show();
Dispatcher.DelayInvoke("ShowMsg",
o => {
() => {
if (!closing) {
closing = true;
Dispatcher.Invoke(new Action(fadeOutStoryboard.Begin));

View File

@ -225,7 +225,7 @@ namespace Wox
if (e.AddedItems.Count > 0 && e.AddedItems[0] != null)
{
lbResults.ScrollIntoView(e.AddedItems[0]);
Dispatcher.DelayInvoke("UpdateItemNumber", o =>
Dispatcher.DelayInvoke("UpdateItemNumber", () =>
{
UpdateItemNumber();
}, TimeSpan.FromMilliseconds(3));

View File

@ -464,7 +464,7 @@ namespace Wox
private void DelayChangeTheme()
{
Dispatcher.DelayInvoke("delayChangeTheme", o =>
Dispatcher.DelayInvoke("delayChangeTheme", () =>
{
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme);
}, TimeSpan.FromMilliseconds(100));