2010-09-27 60 views
0

我有一个反序列化方法(XML),运行良好,直到它达到X对象数。在X以下,反序列化所需的时间是可以接受的,并且被阻止的UI不是问题。但是,如果对象数量大于X(相对不太可能,但可能),则加载时间太长。一旦反序列化(或任何其他方法)启动后,是否可以从UI线程跳转到后台线程,以便在反序列化时间过长时解锁UI线程?谢谢切换到后台线程并继续执行方法

回答

2

只要在所有情况下在后台线程中进行反序列化。如果对象数量低于X,它不会成为问题,并且如果它大于X,它将不会阻止UI。

您可以在后台工作人员中执行此操作,并使用RunWorkerCompleted事件(这是在UI线程上提出的)

+0

谢谢。我想这将是最好的方式。我最初并不想在bg上做所有的事情,因为在反序列化完成之前用户可能会尝试访问这些对象。但是,通过该事件通知,我可以检查它是否已完成。 – XSL 2010-09-27 18:12:58

0

不,一旦你请求BCL设施的反序列化,你不能切换线程类型。也许如果你编写了你自己的自定义解串器,你可以这样做,但是在所有个案(由于大案例)而不是在之后简单地使用单独线程(例如线程池)执行此任务会更有效你过境X