Библиотеки классов.Net: ответственность за многопоточность

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

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

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам