我正在将 GMAP.Net 库用于映射 Windows 应用程序。我的 Sql Server 数据库上有大约 17000 个多边形。在表单加载事件中,我从数据库中选择所有多边形并填充数据表,然后从数据表中一一绘制多边形。我还有一个树视图,我将所有 17000 个多边形名称添加到该树视图中。现在,当我选中 treeview 上的全选复选框时,我在 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 秒才能完全运行。有没有办法优化这段代码以在更短的时间内完成?