1044 |
|
} |
1045 |
|
private void search_provider_OnBytesRead(OnBytesReadEventArgs e) |
1046 |
|
{ |
1047 |
+ |
if (SearchWorkerThread.CancellationPending) { e.Canceled = true; return; } |
1048 |
|
SearchDataTypes sdt = SearchArgs.DataType; |
1049 |
|
bool unsigned = SearchArgs.IsUnsignedDataType; |
1050 |
|
int Last_Whole_Percent_Done = 0; |
1077 |
|
if (unsigned) { writer.WriteResult<UInt64>((uint)CurrentIndex, br.ReadUInt64()); } |
1078 |
|
else { writer.WriteResult<Int64>((uint)CurrentIndex, br.ReadInt64()); } break; |
1079 |
|
} |
1080 |
+ |
if (SearchWorkerThread.CancellationPending) { e.Canceled = true; return; } |
1081 |
|
} |
1082 |
|
catch (EndOfStreamException) { } |
1083 |
|
double double_percent_done = 100.0 * (double)((double)CurrentIndex / (double)e.TotalCount); |
1090 |
|
resultsprogress.Message = string.Format(" -> Reading Address: 0x{0:x8}", (CurrentIndex + MemoryRangeStart)); |
1091 |
|
Last_Whole_Percent_Done = int_percent_done; |
1092 |
|
} |
1093 |
+ |
if (SearchWorkerThread.CancellationPending) { e.Canceled = true; return; } |
1094 |
|
} |
1095 |
|
switch (sdt) |
1096 |
|
{ |
1112 |
|
} |
1113 |
|
} |
1114 |
|
} |
1115 |
+ |
if (SearchWorkerThread.CancellationPending) { e.Canceled = true; return; } |
1116 |
|
} |
1117 |
|
private void SearchWorkerThread_DoWork(object sender, DoWorkEventArgs e) |
1118 |
|
{ |
1149 |
|
provider.OnBytesRead += new BaseEventHandler<OnBytesReadEventArgs>(search_provider_OnBytesRead); |
1150 |
|
provider.ReadProcessMemoryAtOnce(MemoryRangeStart, (MemoryRangeSize - MemoryRangeStart), writer); |
1151 |
|
provider.CloseProvider(); |
1152 |
+ |
if (SearchWorkerThread.CancellationPending) { provider_st.Stop(); st.Stop(); writer.CancelRequest(); e.Result = true; return; } |
1153 |
|
writer.Dispose(); |
1154 |
|
} |
1155 |
|
provider_st.Stop(); |
1730 |
|
|
1731 |
|
private void SearchWorkerThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) |
1732 |
|
{ |
1733 |
< |
if (!e.Cancelled) |
1733 |
> |
try { if ((bool)e.Result) { logger.Warn.WriteLine("Search operation was cancelled."); resultsprogress.Value = 0; resultsprogress.Message = ""; return; } } |
1734 |
> |
catch (InvalidCastException) { } |
1735 |
> |
try |
1736 |
|
{ |
1737 |
< |
Stopwatch st = (e.Result as Stopwatch); |
1737 |
> |
Stopwatch st = (Stopwatch)e.Result; |
1738 |
|
st.Stop(); |
1739 |
|
logger.Profiler.WriteLine("Search took {0} seconds, overall, to complete.", st.Elapsed.TotalSeconds); |
1740 |
|
} |
1741 |
< |
|
1741 |
> |
catch (InvalidCastException) { } |
1742 |
> |
catch (Exception ex) { throw ex; } |
1743 |
> |
|
1744 |
|
resultsprogress.Value = 100; |
1745 |
|
bool unsigned = SearchArgs.IsUnsignedDataType; |
1746 |
|
using (SearchResultReader reader = new SearchResultReader(SearchGuid)) |