Browse Source

fixed bug in FindAllParallel;

don't display stop button again, if search is loaded from history
pull/23/head
Siegfried Pammer 14 years ago
parent
commit
a72eb6c334
  1. 7
      src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs
  2. 29
      src/AddIns/Misc/SearchAndReplace/Project/Gui/DefaultSearchResult.cs

7
src/AddIns/Misc/SearchAndReplace/Project/Engine/SearchManager.cs

@ -159,10 +159,9 @@ namespace SearchAndReplace
if (i >= taskCount) { if (i >= taskCount) {
HandleResult(queue.Dequeue(), observer, exceptions, files); HandleResult(queue.Dequeue(), observer, exceptions, files);
} }
if (exceptions.Count == 0) { if (exceptions.Count > 0) break;
FileName file = files[i]; FileName file = files[i];
queue.Enqueue(System.Threading.Tasks.Task.Factory.StartNew(() => SearchFile(file))); queue.Enqueue(System.Threading.Tasks.Task.Factory.StartNew(() => SearchFile(file)));
}
} }
while (queue.Count > 0) { while (queue.Count > 0) {
HandleResult(queue.Dequeue(), observer, exceptions, files); HandleResult(queue.Dequeue(), observer, exceptions, files);

29
src/AddIns/Misc/SearchAndReplace/Project/Gui/DefaultSearchResult.cs

@ -142,6 +142,7 @@ namespace SearchAndReplace
public class ObserverSearchResult : DefaultSearchResult, IObserver<SearchedFile> public class ObserverSearchResult : DefaultSearchResult, IObserver<SearchedFile>
{ {
Button stopButton; Button stopButton;
bool finished;
public ObserverSearchResult(string title) public ObserverSearchResult(string title)
{ {
@ -164,18 +165,24 @@ namespace SearchAndReplace
{ {
var items = base.GetToolbarItems(); var items = base.GetToolbarItems();
stopButton = new Button { Content = new Image { Height = 16, Source = PresentationResourceService.GetBitmapSource("Icons.16x16.Debug.StopProcess") } }; if (!finished) {
stopButton.Click += StopButtonClick; stopButton = new Button { Content = new Image { Height = 16, Source = PresentationResourceService.GetBitmapSource("Icons.16x16.Debug.StopProcess") } };
stopButton.Click += StopButtonClick;
items.Add(stopButton);
}
items.Add(stopButton);
stopButton.Visibility = Visibility.Visible;
return items; return items;
} }
void StopButtonClick(object sender, RoutedEventArgs e) void StopButtonClick(object sender, RoutedEventArgs e)
{ {
stopButton.Visibility = Visibility.Hidden; try {
if (Registration != null) Registration.Dispose(); stopButton.Visibility = Visibility.Hidden;
if (Registration != null) Registration.Dispose();
} finally {
finished = true;
}
} }
void IObserver<SearchedFile>.OnNext(SearchedFile value) void IObserver<SearchedFile>.OnNext(SearchedFile value)
@ -191,9 +198,13 @@ namespace SearchAndReplace
void OnCompleted() void OnCompleted()
{ {
stopButton.Visibility = Visibility.Collapsed; try {
if (Registration != null) stopButton.Visibility = Visibility.Collapsed;
Registration.Dispose(); if (Registration != null)
Registration.Dispose();
} finally {
finished = true;
}
} }
void IObserver<SearchedFile>.OnCompleted() void IObserver<SearchedFile>.OnCompleted()

Loading…
Cancel
Save