改善代码和UI性能

时间:2010-05-22 00:35:13

标签: c# .net vb.net

我正在处理我需要一些帮助的情况。我需要提高使用用户选择信息记录和更新UI的功能的性能。我的代码当前所做的是

'This is called to update the Database each time the user 
'makes a new selection on the UI 

Private Sub OnFilterChanged(String newReviewValueToAdd) 
    AddRecentViewToDB(newReviewValueToAdd)
    UpdateRecentViewsUI()
    PageReviewGrid.Rebind()'Call Grid Rebind    
End Sub


'This is the code that handles updating the UI with the Updated selection 
Private Sub UpdateRecentViewsUI()
    Dim rlNode As RadTreeNode = radTree.FindNodeByValue("myreviewnode")
    Dim Obj As Setting
    Dim treenode As RadTreeNode
    For i As Integer = 0 To Count - 1
        Obj = Setting.Review.Item(i)
        treenode = New RadTreeNode(datetime.now.ToString,i.ToString())
        treenode.ToolTip = obj.GetFilter
        radNode1.Nodes.Add(treenode)
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

首先,您需要确定实际运行缓慢的部分。这通常最容易通过分析器完成,但您可以使用Stopwatch类。

一旦确定了缓慢的部分,然后就可以考虑如何加快速度。

作为猜测,我会说最慢的部分可能是你的AddRecentViewToDB方法:我认为这是写入数据库。加速UI的更简单方法是在后台实际执行工作线程上的该步骤。为此,有BackgroundWorker类使它相对容易。

如果这不是造成放缓的原因,那么你将不得不回到上面的第一步,找出什么是慢的。

答案 1 :(得分:0)

提高性能的一种简单方法是减少工作次数。在OnFilterChanged中添加一个语句,如:

' Only do this once every 50 updates, to improve performance
if ((update_counter % 50) != 0)
{
  update_counter += 1;
  ' or do this one every second
  if (update_time_now - update_time_last_update < 1 second)
    return;
}
update_time_last_update = update_time_now;
update_counter = 0;