Инициализация объектов в фоновом режиме - PullRequest
1 голос
/ 08 апреля 2010

Мне нужно инициализировать несколько объектов, это может занять некоторое время, поэтому я хочу сделать это в некотором фоновом потоке. Я также хочу отобразить индикатор выполнения, показывающий процесс инициализации.
Какой самый элегантный способ сделать это?

Я думал об интерфейсе:

interface ILoadable
{
    int Progress { get; }
    event EventHandler Loaded;
}

1 Ответ

8 голосов
/ 08 апреля 2010

Почему бы просто не использовать BackgroundWorker напрямую? Он предоставляет события для DoWork, ProgressChanged и RunWorkerCompleted.

Преимущество этого (или тонкой обертки по сравнению с этим) заключается в том, что вы автоматически обрабатываете резьбу за вас, и она очень хорошо протестирована.

Если вы хотите обернуть это, я бы порекомендовал создать себе абстрактный класс, который инкапсулирует BackgroundWorker и позволит вам предоставить Action делегатов для операции запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...