1

我正在使用后台工作人员使用 tableadapter.fill() 填充一堆数据集。出于某种原因,它们导致 UI 无响应。这怎么可能?我不会用它向 UI 报告任何信息……它只是应该在后台运行,没有进度条。

Me.spOpportunityTableAdapter.Fill(Me.DsBdPipeline.spOpportunity, CType(ActiveStatus, Integer))
Me.ClientTableAdapter.Fill(Me.DsBdPipeline.Client)
Me.ClientTypeTableAdapter.Fill(Me.DsBdPipeline.ClientType)
Me.ClientPriorityTableAdapter.Fill(Me.DsBdPipeline.ClientPriority)
Me.OpportunityStatusTableAdapter.Fill(Me.DsBdPipeline.OpportunityStatus)
Me.MarketSegmentTableAdapter.Fill(Me.DsBdPipeline.MarketSegment)
Me.ProcurementTypeTableAdapter.Fill(Me.DsBdPipeline.ProcurementType)
Me.BusDevProjectTableAdapter.Fill(Me.DsBdPipeline.BusDevProject)
Me.ProjectTableAdapter.Fill(Me.DsBdPipeline.Project)
Me.StateTableAdapter.Fill(Me.DsBdPipeline.State)
Me.OrgMapTableAdapter.Fill(Me.DsBdPipeline.OrgMap)
Me.EmployeeTableAdapter.Fill(Me.DsBdPipeline.Employee)
Me.ClientServiceManagerViewTableAdapter.Fill(Me.DsBdPipeline.ClientServiceManagerView)
4

1 回答 1

1

老实说,我不知道为什么这会给某些用户而不是其他用户带来麻烦,但这就是解决问题的原因。

我将其追溯到TableAdapter.Fill在 backgroundworker 方法中执行的DoWork方法。对我来说,在后台线程上执行的某些东西没有用它的进度更新 UI 会导致 UI 无响应,这对我来说毫无意义。所以我认为这一定是 TableAdapter 填充的内容绑定到 UI 组件并导致问题(只有上帝知道为什么)。

因此,我将所有设计时数据绑定从控件中移除。我重新排序,以便在后台工作线程中TableAdapter填充。在该RunWorkerCompleted方法中,我将控件绑定到 BindingSource。

瞧,问题解决了。

于 2012-04-12T00:16:22.143 回答