Example #1
0
        void TaskConverterDone(object sender)
        {
            MyTaskConvertImageFile converter = sender as MyTaskConvertImageFile;

            TaskMgr.Tasks.Remove(converter);
            WorkingThread--;
            if (WorkingThread > 0)
            {
                return;
            }
            progressBar1.Value = progressBar1.Maximum;
            listBox1.Items[listBox1.Items.Count - 1] = $"처리 중: {progressBar1.Value}/{progressBar1.Maximum}";
            int valueSum = 0;
            int convSum  = 0;
            int failSum  = 0;

            for (int i = 0; i < MaxProcessor; i++)
            {
                valueSum += Converters[i].Value;
                convSum  += Converters[i].Converted;
                failSum  += Converters[i].Failed;
            }
            listBox1.Items.Add($"처리 완료. {valueSum}개 중 {convSum}개 성공, {failSum}개 실패");

            EntireTaskFinished();
        }
Example #2
0
        void TaskConverterUpdate(object sender)
        {
            MyTaskConvertImageFile converter = sender as MyTaskConvertImageFile;
            int valueSum = 0;

            for (int i = 0; i < MaxProcessor; i++)
            {
                valueSum += Converters[i].Value;
            }
            progressBar1.Value = valueSum;
            listBox1.Items[listBox1.Items.Count - 1] = $"처리 중: {progressBar1.Value}/{progressBar1.Maximum}";
        }
Example #3
0
        void TaskCounterDone(object sender)
        {
            MyTaskCountFiles counter = sender as MyTaskCountFiles;

            TaskMgr.Tasks.Remove(counter);

            string[] files = counter.Files;
            progressBar1.Maximum = files.Count();

            int processor = Environment.ProcessorCount;

            if (processor < 1)
            {
                listBox1.Items.Add($"오류: 이 장치에 가용 가능한 논리 프로세서가 없음");
                EntireTaskFinished();
                return;
            }
            listBox1.Items.Add($"탐색된 파일 {progressBar1.Maximum} 개에 대한 일괄 처리 개시");
            listBox1.Items.Add($"일괄 처리에 프로세서 {processor}개 가용");
            MaxProcessor  = processor;
            WorkingThread = processor;
            Converters    = new MyTaskConvertImageFile[processor];
            listBox1.Items.Add($"처리 중: {progressBar1.Value}/{progressBar1.Maximum}");

            Queue <string>[] subfiles = new Queue <string> [processor];
            for (int i = 0; i < MaxProcessor; i++)
            {
                subfiles[i] = new Queue <string>();
            }
            {
                int imax = progressBar1.Maximum;
                int splt = 0;
                for (int i = 0; i < imax; i++)
                {
                    subfiles[splt].Enqueue(files[i]);
                    splt++;
                    if (splt >= MaxProcessor)
                    {
                        splt = 0;
                    }
                }
            }

            for (int i = 0; i < MaxProcessor; i++)
            {
                MyTaskConvertImageFile converter = new MyTaskConvertImageFile(this);
                converter.Files        = subfiles[i].ToArray();
                converter.TaskUpdate  += TaskConverterUpdate;
                converter.TaskStopped += TaskConverterDone;
                TaskMgr.Tasks.Add(converter);

                Converters[i] = converter;

                MyTaskUpdater updater = new MyTaskUpdater(this);
                updater.UpdateTarget = converter;
                updater.UpdateDelay  = 500 + 25 * i;

                converter.Start();
                updater.Start();
            }
        }