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バックグラウンドワーカーメソッドで実行されているメソッドまでた​​どりましたDoWork。バックグラウンド スレッドで何かが実行されていて、進行状況に応じて UI を更新していないために、UI が応答しなくなるということは、私には意味がありませんでした。だから私はそれがTableAdapterがUIコンポーネントにバインドされて問題を引き起こしているものであるに違いないと考えました(理由は神のみが知っています)。

そこで、デザイン時のデータバインディングをすべてコントロールから取り除きました。TableAdapterバックグラウンド ワーカー スレッドで's が満たされるように並べ替えました。このRunWorkerCompletedメソッドでは、コントロールを BindingSource にバインドします。

そして出来上がり、問題は解決しました。

于 2012-04-12T00:16:22.143 に答える