示例#1
0
        /// <summary>
        /// Event: Occurs when the timer is fired.
        /// </summary>
        /// <param name="o"></param>
        /// <param name="e"></param>
        private void pollTimer_TimerFired(object o, TimerEventArgs e)
        {
            this.IgnoreSubDirectories = false;

            pollTimer.StopTimer();

            //Console.WriteLine("Number of rules: {0}", Rules.Length);

            foreach (Rule r in Rules)
            {
                //TODO: Work on exclusion list.
                TaskItemList list = r["HASHAFTER"];
                foreach (TaskItem taskitem in list)
                {
                    lock (Poll)
                    {
                        //Console.WriteLine("RuleName={0};    RuleValues:{1}", r.Name, r.wildcards.Value);
                        if (!CompletedDirs.Contains(taskitem.Name.ToLower()) && !Poll.Contains(taskitem.Name.ToLower()) && !Exclude(taskitem.Name))
                        {
                            ManualResetEvent mre = new ManualResetEvent(false);
                            tmpEvents.Add(mre);
                            Task task = new Task(taskitem, wildcards, SearchBrain.List.MaxPerFolder, mre);
                            task.MaxDepth = taskitem.MaxDepth;
                            Poll.Add(task);
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// Setups the Poller with initial folders to start with.
        /// </summary>
        internal void CreateTasks()
        {
            int i = 0;

            if (!useLocation)
            {
                this.IgnoreSubDirectories = false;

                //Console.WriteLine("Number of rules: {0}", Rules.Length);
                foreach (Rule r in Rules)
                {
                    //TODO: Work on exclusion list.
                    TaskItemList list = r["HASHFIRST"];

                    //Console.WriteLine("RuleName={0};    RuleValues:{1}", r.Name, r.wildcards.Value);

                    foreach (TaskItem taskitem in list)
                    {
                        if (taskitem != null)
                        {
                            Events.Add(new ManualResetEvent(false));
                            Task task = new Task(taskitem, wildcards, Hasher.MaxPerFolder, Events[i]);
                            task.MaxDepth = taskitem.MaxDepth;
                            //Console.WriteLine("MaxDepth = {0}", task.MaxDepth);
                            Poll.Add(task);
                            i++;
                        }
                    }
                    pollTimer.BeginTimer();
                }
            }
            else
            {
                foreach (string s in this.locations)
                {
                    if (s.Trim().CompareTo("") != 0)
                    {
                        Events.Add(new ManualResetEvent(false));
                        Poll.Add(new Task(new TaskItem(s), wildcards, Hasher.MaxPerFolder, Events[i]));
                        i++;
                    }
                }
            }
        }
示例#3
0
文件: TaskItem.cs 项目: ctuckz/NedDo
 public TaskItem()
 {
     ID           = Guid.NewGuid();
     CreatedUTC   = DateTime.UtcNow;
     RelatedTasks = new TaskItemList();
 }