처리해야할 데이터 수가 몇십만개 이상일 경우 폼이 뜨지 않거나 느려지는 경우가 있습니다. 


이럴 경우 프로그레스 바 등을 이용하여 비동기로 처리하면 폼이 안뜨는 현상을 방지하고 백그라운드에서 오래걸리는 작업을 수행할 수 있습니다. 

시리즈리스트와 시리즈 선언 위치, 백그라운드워커 컨트롤에서 제공하는 각 이벤트에 히포차트 코드를 어떻게 배치하는지 보시면 되겠습니다. 

아래 코드 참고하시기 바랍니다. 


public partial class Form1 : Form
    {
        SeriesList sList = new SeriesList ();
        Series sr = new Series();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load( object sender, EventArgs e)
        {
            this.progressBar1 .Maximum = 100000;

            sList .ChartType = ChartType.Line;

            backgroundWorker1 .RunWorkerAsync();
        }

        private void backgroundWorker1_DoWork( object sender, DoWorkEventArgs e)
        {
            Random r = new Random();
            for ( int x = 0; x < 100000 ; x++)
            {
                SeriesItem item = new SeriesItem ();
                item .Name = x .ToString();
                item .YValue = r .Next( 90);
                sr .items .Add(item);

                backgroundWorker1 .ReportProgress( 1); // 계산된 값으로 수정
            }
        }

        private void backgroundWorker1_ProgressChanged( object sender, ProgressChangedEventArgs e)
        {
            this.progressBar1 .Value = e .ProgressPercentage;
        }

        private void backgroundWorker1_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e)
        {
            // 에러가 있는지 체크
            if (e .Error != null)
            {
                MessageBox.Show(e .Error .Message);
                return;
            }

            sList .SeriesCollection .Add(sr);
            this.hHippoChart1 .SeriesListDictionary .Add(sList);
            this.hHippoChart1 .DrawChart();

            MessageBox.Show("completed");
        }
    }

사업자 정보 표시
히포차트 | 하영대 | 경기도 성남시 수정구 복정동 631-5 401 | 사업자 등록번호 : 129-34-55719 | TEL : 031-751-6673 | Mail : hippochart@gmail.com | 통신판매신고번호 : 제 2010-경기성남-1203호 | 사이버몰의 이용약관 바로가기

Posted by 리바이 병장

댓글을 달아 주세요



/* 다음 웹인사이드 로그 분석*/