Задать вопрос
Ответы пользователя по тегу .NET
  • Использование итераторов foreach?

    @cicatrix
    было бы большой ошибкой думать
    Интерфейсы нужны для того, чтобы с вашими собственными классами могли работать другие классы.
    Например, вы реализовали собтсвенную коллекцию объектов со своей странной логикой. Допустим, вы хотите, чтобы по этой коллекции можно было бы пройтись циклом foreach, но изначально фрейморк понятия не имеет, каким образом осуществлять итерацию объектов внутри вашей коллекции. Вот тогда вы заявляете, что ваш класс реализует интерфейс IEnumerable, и предоставляет наружу реализацию этого интерфейса. Вот тогда фреймворк уже знает, как можно перебрать все элементы коллекции.
    IEnumerable реализует и массив и список и словарь и связный список, то есть для того, чтобы вы могли пройтись по какому-либо классу при помощи foreach, этот класс обязан реализовывать IEnumerable. Считайте интефейс это "соглашение о сотрудничестве" между разными классами, в котором чётко определены правила взаимодействия.
    Ответ написан
  • Как правильно распараллеливать выполнение цикла "For"?

    @cicatrix
    было бы большой ошибкой думать
    Race Condition по всей видимости. Добро пожаловать в мир многопоточности. При параллельном исполнении, нет гарантии, что порядок сохранится. Кто первый встал, того и тапки.
    Я бы вам посоветовал бить массив (или что там у вас в цикле) на 2, 3 ... N частей, строго отводя каждой части свои области (скажем, первый поток заполняет колонки 1...10, второй - 11..20 и т.д.) и запускал бы N синхронных циклов в разных потоках.
    И в принципе, чтобы понять, как работает многопоточность, я бы для начала попробовал всё сделать вручную, при помощи старого доброго System.Threading.Thread. В Tasks многое спрятано "под капот", и можно на много граблей наступить.
    Ответ написан
    5 комментариев
  • Пишу таск-менеджер на ASP.NET. Как реализовать подсчёт времени выполнения задачи?

    @cicatrix
    было бы большой ошибкой думать
    Вы вообще почитайте про время жизни процесса в asp.net. Дело в том, что полагаться на исполнение каких-либо фоновых задач в приложении, которое IIS может в любой момент перезапустить, я бы не стал. Если вам необходимо серверное приложение, выполняющееся независимо от веб-морды, лучше писать его как отдельное приложение и размещать на сервере отдельной задачей.
    Ответ написан
    Комментировать
  • Как передать часть кода в метод другого класса (C#)?

    @cicatrix
    было бы большой ошибкой думать
    Кода какого? Программного?
    Судя по индексам, у вас древовидная структура данных (граф). В основном классе, необходимо считывать данные именно в него (есть, кстати, системный класс TreeNode для этого).
    Дальше можно корневой элемент дерева (или какую-то из веток) открыть в качестве свойства для изменений в другом классе.
    Ответ написан
    Комментировать