private void Update_After(object sender, ObjectEventArgs e) { if (!SearchIndexInfoProvider.SearchEnabled || !SearchIndexInfoProvider.SearchTypeEnabled(CMS.Search.SearchHelper.CUSTOM_SEARCH_INDEX)) { return; } var fileInfo = e.Object as MediaFileInfo; if (fileInfo == null) { return; } var taskInfo = new SearchTaskInfo { SearchTaskObjectType = SearchHelper.INDEX_TYPE, SearchTaskValue = fileInfo.FileID.ToString(), SearchTaskPriority = 0, SearchTaskType = SearchTaskTypeEnum.Update, SearchTaskStatus = SearchTaskStatusEnum.Ready }; SearchTaskInfoProvider.SetSearchTaskInfo(taskInfo); }
public int[] search(string S, string[] u, int letters) { buildDistTable(letters); //Convert the strings to int arrays for performance int[] intS = stringToIntArray(S); SearchTaskInfo[] tasks = new SearchTaskInfo[u.Length]; for (int idx = 0; idx < u.Length; idx++) { tasks[idx] = new SearchTaskInfo(); tasks[idx].s = intS; tasks[idx].u = stringToIntArray(u[idx]); tasks[idx].idx = idx; tasks[idx].doneEvent = new AutoResetEvent(false); ThreadPool.QueueUserWorkItem(new WaitCallback(findOptimalIndexCallback), tasks[idx]); } int[] optimalIndices = new int[u.Length]; foreach (SearchTaskInfo task in tasks) { task.doneEvent.WaitOne(); task.doneEvent.Close(); } for (int idx = 0; idx < u.Length; idx++) { optimalIndices[idx] = tasks[idx].optimalIndex; } return optimalIndices; }