Это мой подход не использовать статические методы и классы в асинхронных операциях - если не используется некоторая технология блокировки для предотвращения условий гонки.
Теперь в структуру С# 4.5+ добавлен async/await, что упрощает многопоточные приложения и поощряет гибкий интерфейс.
Однако - поскольку блокировка не может/не должна быть помещена над ожидающим способом (и я не обсуждаю это), делает ли это теперь статические методы, использующие async/wait полностью избыточным?