히포차트4/개발 강좌
히포차트로 대용량 데이터를 비동기 방식으로 그려보자
리바이 병장
2013. 5. 21. 19:28
처리해야할 데이터 수가 몇십만개 이상일 경우 폼이 뜨지 않거나 느려지는 경우가 있습니다.
이럴 경우 프로그레스 바 등을 이용하여 비동기로 처리하면 폼이 안뜨는 현상을 방지하고 백그라운드에서 오래걸리는 작업을 수행할 수 있습니다.
시리즈리스트와 시리즈 선언 위치, 백그라운드워커 컨트롤에서 제공하는 각 이벤트에 히포차트 코드를 어떻게 배치하는지 보시면 되겠습니다.
아래 코드 참고하시기 바랍니다.
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호 | 사이버몰의 이용약관 바로가기