private void HandleWork(IQueueAccessor<int, SearchField[]> queue)
{
SearchField[] work = queue.GetAllWorkItems().Last();
if (IsSearchCanceled(queue))
return;
IEnumerable<int> results = PerformSearch(work, () => IsSearchCanceled(queue));
if (results == null || IsSearchCanceled(queue))
return;
m_synchronizationContext.Post(OnSearchCompleted, new SearchCompletedEventArgs(work, FilterResults(results)));
}