void run()
        {
            progressBar1.Minimum = 0;
            progressBar1.Maximum = 100;

            if (!FileHandler.available())
            {
                return;
            }

            EcgStatistic set = FileHandler.id;


            if (set.critical == null)
            {
                set.critical = new List <long>();
            }


            long len = FileHandler.blocksCount();

            long i0 = 0;

            if (set.critical.Count > 2)
            {
                i0 = set.critical[set.critical.Count - 1] + 1;
            }


            for (long i = i0; i < len; i++)
            {
                FileHandler.setPosition(i);

                if (FileHandler.remainingBlocks() < 2)
                {
                    break;
                }

                int sdm = FileHandler.io.ReadByte();
                if (sdm == 170)
                {
                    set.critical.Add(i);
                }

                progressBar1.Value = (int)((float)i / (float)len * 100.0f);
                progressBar1.Refresh();
            }
            XmlClass <EcgStatistic> .Save(set, FileHandler.p + ".xml", SerializedFormat.Document);

            listBox1.Items.Clear();
            if (set.critical != null)
            {
                foreach (var l in set.critical)
                {
                    time t = new time();
                    t.block      = l;
                    t.sampleRate = main.graph1.sampleRate;
                    t.s2         = FileHandler.id.starttimeSec;
                    listBox1.Items.Add(t);
                }
            }

            progressBar1.Value = 0;
            progressBar1.Refresh();

            MessageBox.Show("finish!");
        }