Переключиться на фоновый поток и продолжить выполнение метода - PullRequest
0 голосов
/ 27 сентября 2010

У меня есть метод десериализации (XML), который хорошо работает, пока не достигнет X числа объектов.Ниже X время десериализации является приемлемым, и блокировка пользовательского интерфейса не является проблемой.Однако, если количество объектов превышает X (относительно маловероятно, но возможно), тогда время загрузки слишком велико.Можно ли перейти от потока пользовательского интерфейса к фоновому потоку после запуска десериализации (или любого другого метода), чтобы я мог разблокировать поток пользовательского интерфейса, если десериализация занимает слишком много времени?спасибо

Ответы [ 2 ]

2 голосов
/ 27 сентября 2010

Просто делайте десериализацию в фоновом потоке во всех случаях.Это не будет проблемой, если количество объектов меньше X, и не будет блокировать пользовательский интерфейс, если он больше X.в событии RunWorkerCompleted (которое вызывается в потоке пользовательского интерфейса)

0 голосов
/ 27 сентября 2010

Нет, как только вы запросили десериализацию из BCL, вы не можете переключать тип потока.Возможно, если бы вы написали свой собственный десериализатор, вы могли бы сделать это, но было бы гораздо эффективнее просто иметь отдельный поток (например, пул потоков) для выполнения этой задачи в всех случаях (из-за больших случаев), а не после того, как вы пересечете границу X.

...