예제 #1
0
        /// <summary>
        /// Fill with ocurrences
        /// </summary>
        /// <param name="ocurrences">Ocurrences</param>
        /// <param name="name">Name</param>
        public void Fill(OcurrenceCollection ocurrences)
        {
            Source.BeginLoadData();
            Source.Rows.Clear();

            foreach (Ocurrence o in ocurrences.GetOrdered())
            {
                Source.Rows.Add(o.Count, o.Value, o);
            }

            Source.EndLoadData();

            CalculateChart(ocurrences);
        }
예제 #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="ocurrences">Ocurrences</param>
        /// <param name="name">Name</param>
        public UCOcurrence(OcurrenceCollection ocurrences, string name)
        {
            InitializeComponent();

            Grid.AutoGenerateColumns = false;

            Text     = name;
            Original = ocurrences;
            Source   = new DataTable();

            Source.Columns.Add("Count", typeof(uint));
            Source.Columns.Add("Value", typeof(string));
            Source.Columns.Add("Tag", typeof(Ocurrence));
            Grid.DataSource = Source;

            Fill(ocurrences);
        }
예제 #3
0
        /// <summary>
        /// Calculate ocurrences
        /// </summary>
        public void GenerateOcurrences()
        {
            foreach (string key in Ocurrences.Keys.ToArray())
            {
                OcurrenceCollection ocur = Ocurrences[key];

                // Fill
                Parallel.ForEach(Instructions, (ins) =>
                {
                    if (ocur.Checker != null && ocur.Checker(ins, out string val))
                        lock (ocur) ocur.Append(val, ins);
                });

                // Clean
                if (Ocurrences[key].Count <= 0)
                    Ocurrences.Remove(key);
            }
        }