2010-05-28 34 views
0

我正在C#中製作一個包含移動新聞欄標籤的桌面應用程序。 我正在使用一個計時器來移動這些標籤,但問題是,當我讓這個計時器的時間間隔較低(例如1-10)時,應用程序佔用CPU使用率的百分比非常高,而當我使它更高時(200 -500)時,標籤的移動變得間歇或不平滑,即使用戶可能無法以舒適的方式閱讀新聞。如何在沒有定時器的情況下在Windows窗體應用程序中移動新聞欄

((更多信息)) 它是Windows窗體應用程序。我移動標籤的方式如下所示:來自RSS源的新聞項目由一組鏈接標籤表示。所有這些鏈接標籤都被添加到一個流佈局容器中。計時器移動整個流程佈局容器。根據我的知識,我發現這種方式是製作新聞欄的最佳方式。如果您有更好的主意或解決方案,請幫助

+0

你可以張貼一些代碼,演示瞭如何在移動的消息欄標籤?根據你如何做,它不應該佔用太多CPU。 – JYelton 2010-05-28 23:50:05

+0

「C#」的描述不夠。這是一個Windows窗體應用程序? WPF? GTK#? – hemp 2010-05-28 23:50:15

+0

它是Windows窗體應用程序。 我移動標籤的方式如下: 來自RSS提要的新聞項目用一組鏈接標籤表示。所有這些鏈接標籤都被添加到一個流佈局容器中。計時器移動整個流程佈局容器。 我發現這種方式根據我的知識製作新聞欄的最佳方式。如果你有更好的主意或解決方案,請幫助。謝謝。 – EgyEast 2010-05-29 00:01:24

回答

0

定時器間隔代表什麼?如果是毫秒,那麼你可以將每秒更新的數量除以1000,並獲得定時器的速率。

你也可以使用睡眠(100)左右,但它可能只是你試圖在你的更新中做太多。也許你可以不那麼頻繁地做「重要改變」,比如每100次更新一次,或者把它們放在自己的計時器上,並儘可能少地更頻繁地更新滾動。

當您的應用程序設置爲每秒更新100或1000次時,您的應用程序佔用大量CPU並不奇怪。 :)

+0

定時器只是移動flowlayoutpanel((請參閱上面添加的信息)) – EgyEast 2010-05-29 00:18:59

0

我懷疑問題是你使用計時器來移動ticker以及填充數據?

如果你想使用定時器滾動視圖,那應該沒問題。您的代碼需要非常輕(只需更新垂直或水平位置並返回)。然而,更好的方法是使用類似「遊戲循環」的方法來實現任何更新頻率(在每次迭代中,時間移動視圖需要多長時間,然後休眠到剩餘的毫秒數擊中目標頻率。)

更新來自單獨的定時器/線程的數據。

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(); 
} 
相關問題