Библиотеки классов .Net - PullRequest
0 голосов
/ 01 июня 2011

Я работаю над библиотекой классов, и один из классов отвечает за извлечение файла XML с использованием XDocument.Load(url) из Интернета. Поскольку выполнение этой операции может занять несколько секунд, имеет смысл запускать ее в своем собственном потоке.

Кто несет ответственность за создание этой темы? Потребитель или класс, который получает файл? Есть ли лучшая практика в этом отношении?

Ответы [ 2 ]

5 голосов
/ 01 июня 2011

Лучше всего реализовать асинхронный шаблон. Это означает, что если в вашем классе есть метод LoadXml, вы также реализуете метод LoadXmlAsync и какое-то событие OnCompleted.

Вы можете прочитать об этом здесь

2 голосов
/ 01 июня 2011

Я думаю, что оба варианта хороши. Это также зависит от того, сколько мест вы бы использовали этот метод для получения данных. Если он используется в нескольких местах, было бы разумно организовать потоки в классе, который извлекает файл.

Я бы лично выбрал последний, потому что это дало бы мне больше гибкости, если бы мне нужно было использовать его в большем количестве мест (возможно, позже).

При размышлении над этим вопросом на ум приходят префиксные методы BeginDoSomeOperation и EndDoSomeOperation, которые дадут еще немного кредитов последнему варианту.

...