Я использую библиотеку GMAP.Net для картографического приложения Windows. У меня около 17000 полигонов в моей базе данных Sql Server. В событии загрузки формы я выбираю все полигоны из базы данных и заполняю таблицу данных, а затем рисую полигоны один за другим из таблицы данных. У меня также есть древовидное представление, в которое я добавляю все 17000 имен полигонов. Теперь, когда я устанавливаю флажок «Выбрать все» в дереве, я вызываю функцию в событии Treeview node_AfterCheck следующим образом:
Private Sub node_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterCheck
If e.Action <> TreeViewAction.Unknown Then
Task.Factory.StartNew(Sub()
GetPolygons(e.Node)
End Sub, TaskCreationOptions.LongRunning)
End If
End Sub
Private Sub GetPolygons(node As TreeNode)
Dim objectId As String
Dim _polygon As GMapPolygon
For Each node1 As TreeNode In node.Nodes
objectId = node1.Name
For Each _polygon In polyOverlay.Polygons.AsParallel
itemTag = _polygon.Tag.ToString.Split("|")
If itemTag (0) = node1.Name Then
_polygon.IsVisible = node.Checked
Exit For
End If
Next
Next
End sub
для полного выполнения этого кода требуется около 40 секунд. Есть ли способ оптимизировать этот код для выполнения в более короткие сроки?
End If
иExit For
. - person rdoubleui   schedule 14.01.2016