2010-05-28 2 views
0

움직이는 News Bar 레이블이 포함 된 C#으로 데스크톱 응용 프로그램을 만들고 있습니다. 타이머를 사용하여 이러한 레이블을 이동하지만이 타이머의 간격을 낮게 (예 : 1-10) 만들면 응용 프로그램이 CPU 사용률이 매우 높습니다. -500) 사용자가 편안한 방법으로 뉴스를 읽을 수 없더라도 레이블의 움직임이 간헐적이거나 부드럽게 움직이지 않습니다.타이머가없는 Windows Forms 응용 프로그램에서 Moving News Bar를 만드는 방법

((추가 정보) Windows 양식 응용 프로그램입니다. 내가 레이블을 이동하는 방법은 다음과 같습니다 : RSS 피드의 뉴스 항목은 링크 레이블 그룹에 표시됩니다. 이러한 모든 링크 레이블은 flowlayout 컨테이너에 추가됩니다. 타이머는 전체 Flowlayout 컨테이너를 이동합니다. 내 지식에 따르면 뉴스 바를 만드는 가장 좋은 방법은이 방법을 찾았습니다. 더 좋은 아이디어 나 해결책이 있다면

+0

당신이 뉴스 바 레이블을 이동하는 방법을 보여줍니다 몇 가지 코드를 게시 할 수 있습니까? 당신이 어떻게하고 있는지에 따라 CPU를 많이 차지해서는 안됩니다. – JYelton

+0

"C#"은 설명이 충분하지 않습니다. Windows Forms 앱입니까? WPF? GTK #? – hemp

+0

윈도우 폼 어플리케이션입니다. 레이블 이동 방법은 다음과 같습니다. RSS 피드의 뉴스 항목은 링크 레이블 그룹에 표시됩니다. 이러한 모든 링크 레이블은 flowlayout 컨테이너에 추가됩니다. 타이머는 전체 Flowlayout 컨테이너를 이동합니다. 뉴스 모음을 만드는 가장 좋은 방법은 내 지식에 따라이 방법을 찾았습니다. 더 좋은 아이디어 나 해결책이 있다면 도움을주십시오. 감사. – EgyEast

답변

0

타이머 간격은 무엇을 나타 냅니까? 밀리 초이면 원하는 초당 업데이트 수를 1000으로 나눠서 타이머 속도를 얻을 수 있습니다.

수면 (100)을 사용할 수도 있지만 업데이트가 너무 많을 수도 있습니다. 아마도 "중요한 변경 사항"을 훨씬 덜 빈번하게 수행 할 수 있습니다 (예 : 100 건의 업데이트 만 가능). 또는 자신의 타이머에 넣을 수 있으며 가능한 한 스크롤을 훨씬 자주 업데이트 할 수 있습니다.

초당 100 번 또는 1000 번 업데이트하도록 설정 한 경우 응용 프로그램이 많은 CPU를 사용한다는 것은 놀라운 일이 아닙니다. :)

+0

타이머는 단지 flowlayoutpanel을 이동합니다 ((위에 추가 된 정보를 참조하십시오)) – EgyEast

0

나는 당신이 타이머를 사용하여 데이터를 채울뿐만 아니라 시세표를 움직이고 있다고 의심합니다.

타이머를 사용하여보기를 스크롤하려면 괜찮습니다. 코드가 극히 가벼워 야합니다 (수직 또는 수평 위치를 업데이트하고 반환). 그러나 더 나은 접근 방법은 "게임 루프"와 같은 것을 사용하여 업데이트 빈도를 달성하는 것입니다 (각 반복 내에서보기를 이동하는 데 걸리는 시간, 남은 밀리 초 동안 수면 목표 빈도를 맞추십시오.)

별도의 타이머/스레드에서 데이터를 업데이트하십시오.

0

봐 : 다음 드래그 한 레이블 및 원 타이머 타이머 설정 간격 = 100 가 :

private void timer1_Tick(object sender, EventArgs e) 
{ 
    label1.Location = new Point(label1.Location.X + 5, label1.Location.Y); 

    if (label1.Location.X > this.Width) 
    { 
     label1.Location = new Point(0 - label1.Width, label1.Location.Y); 

     label1.Text = "Your Message Here "; 
    } 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    timer1.Start(); 
} 
관련 문제