切换到后台线程并继续执行方法

时间:2010-09-27 18:01:48

标签: c# multithreading backgroundworker

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

2 个答案:

答案 0 :(得分:2)

在所有情况下只需在后台线程中进行反序列化。如果对象数量低于X,则不会出现问题,如果它大于X,则不会阻止UI。

您可以在后台工作程序中执行此操作,并将结果用于RunWorkerCompleted事件(在UI线程中引发)

答案 1 :(得分:0)

不,一旦您从BCL工具请求反序列化,就无法切换线程类型。也许如果您编写自己的自定义反序列化器,您可以这样做,但只需要一个单独的线程(例如线程池)在所有情况下执行此任务会更有效(由于大案例) ),而不是在跨越X之后。