/// <summary> /// Start a scan /// </summary> /// <param name="strAPIs"></param> /// <returns></returns> public bool Start(string [] strAPIs, string strPath, string[] strExts, frmMain frmMain) { this.strAPIs = strAPIs; this.frmMaster = frmMain; ScanParams scanParams = new ScanParams(strPath, strExts); ThreadPool.SetMaxThreads(intMaxThreads, intMaxThreads * 2); trdEnum = new Thread(this.ThreadFunction); trdEnum.IsBackground = true; trdEnum.Start(scanParams); return(true); }
/// <summary> /// /// </summary> /// <param name="strObjPath"></param> private void ThreadFunction(Object strObjParams) { //Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; try { ScanParams scanParams = (ScanParams)strObjParams; foreach (string strExt in scanParams.strExts) { //Console.WriteLine("searching for " + strExt); EnumerateFiles(scanParams.strPath, strExt); } frmMaster.ScanStopping(); while (intQueue > 0) { //Console.WriteLine(intQueue.ToString()); Thread.Sleep(1000); } //Console.WriteLine("Queue empty in main scan"); frmMaster.ScanStopped(); } catch (ThreadAbortException) { frmMaster.bScanStopped = true; frmMaster.ScanStopping(); while (intQueue > 0) { Console.WriteLine(intQueue.ToString()); Thread.Sleep(1000); } //Console.WriteLine("Queue empty in abort"); frmMaster.ScanStopped(); } }
/// <summary> /// Start a scan /// </summary> /// <param name="strAPIs"></param> /// <returns></returns> public bool Start(string [] strAPIs, string strPath, string[] strExts,frmMain frmMain) { this.strAPIs = strAPIs; this.frmMaster = frmMain; ScanParams scanParams = new ScanParams(strPath, strExts); ThreadPool.SetMaxThreads(intMaxThreads,intMaxThreads * 2); trdEnum = new Thread(this.ThreadFunction); trdEnum.IsBackground = true; trdEnum.Start(scanParams); return true; }