2012-02-21 55 views
0

我正在创建一个后台工作线程并在其中加载数据并在UI中显示。 我知道问题是在UI中显示数据(因为它是一个UI线程) 但我从块的形式从服务器获取数据。 假设第一次接收10条记录,那么我必须更新Ui,然后调用下一条记录。跨线程操作在C#中无效吗?

如何解决此问题? 谢谢。

+0

那么问题是什么? – 2012-02-21 06:39:10

+0

问题是当我调用UpdateUserUI()方法时,它给出的错误“交叉线程操作无效” – user662285 2012-02-21 06:42:27

回答

1

如果您使用的是BackgroundWorker,则必须使用报告进度功能。

我通常所做的就是完成DoWork方法中所需的工作,并且当您要更新GUI时,请拨打worker.ReportProgress并提供所需的数据。然后在报告进度方法中,更新GUI,因为该方法将在GUI线程上运行。另外请确保您将WorkerReportsProgress设置为true,否则尝试拨打ReportProgress时您会遇到异常情况。

+0

但我的要求是获取一些n记录(比如说10)更新UI然后调用另一条记录然后更新UI.When我之后调用updateUI 10条记录给出了交叉线程异常。 – user662285 2012-02-21 07:00:32

+0

这是我的观点。在DoWork中,获得10条记录,然后调用ReportProgress并更新GUI,在DoWork中获得10条记录,并再次调用ReportProgress。继续阅读所有记录。 – 2012-02-21 07:20:17

+0

报告进度期望百分比参数我应该给那个... – user662285 2012-02-21 07:28:24