绑定GridView并挂起UI线程

问题描述

我的UI线程有问题,当我尝试将包含2,000,000条记录的BindingList绑定到网格视图时,如果没有冻结UI的任何方法,它会挂起,请帮帮我,或者如何更新该控件中的某些控件UI线程没有冻结?

我的代码

    Private Async Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
        Await FillPositions()
        BindSource()
    End Sub

    Private Async Sub FillPositions()
        Await Execute(Function()
                          Return ExecuteFillPositions()
                      End Function)
    End Sub

    Private Function ExecuteFillPositions()
        Positions = New BindingList(Of Order)

        For index = 1 To 2000000
            Positions.Add(New Order With {
                .Id = index,.Comm = index * 0.123,.Price = index * 0.321,.Script = "USD",.Time = Now.ToString("yyyy-MM-dd HH:mm:ss.fff"),.Type = "New",.Value = index * 0.132
            })
        Next
        Console.WriteLine($"Source count: {Positions.Count}")
        Return 0
    End Function

    Private Async Function Execute(Of TResult)(ByVal func As Func(Of TResult)) As Task(Of TResult)
        Return Await Task.Factory.StartNew(Function()
                                               Dim result = nothing

                                               Try
                                                   result = func()
                                               Catch ex As Exception
                                                   Throw New NotImplementedException
                                               End Try

                                               Return result
                                           End Function)
    End Function

以下代码导致挂起2-3秒

    Private Sub BindSource()
        RadGridView1.DataSource = Positions
    End Sub

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)