Unmaskedguy, замедляется, похоже, потому что объект Changes имеет тип List, а искать каждый раз в пополняющемся списке всё дольше и дольше. Метод Find в классе List обходит во время поиска весь массив по новой каждый его вызов, пока не найдёт искомое значение.
Где вы такой стиль оформления кода взяли? Всё не по канонам :).
Скиньте проект на bitbucket или github и дайте ссылку или залейте на какой-нибудь облачный сервис.
И скажите, вам точно нужна помощь, чтобы я впустую не тратил кучу времени, а вы не воспользовались кодом.
Денис Бредун, есть книга: "CLR via C# - Программирование на платформе Microsoft.NET Framework 4.5 на языке C#. 4-е издание". Там много деталей описано, что и как устроено. Возможно есть что-то новее, я просто не в курсе.
Денис Бредун, вот из доков:
Как и в случае с типами всех классов, сведения о типе для статического класса загружаются средой выполнения .NET, когда загружается программа, которая ссылается на класс. Программа не может точно указать, когда загружается класс. Однако гарантируется загрузка этого класса, инициализация его полей и вызов статического конструктора перед первым обращением к классу в программе. Статический конструктор вызывается только один раз, и статический класс остается в памяти на время существования домена приложения, в котором находится программа.
Денис Бредун, да и вообще звучит странно, что если ты не создал экземпляр класса (объект), то это тип. В смысле это тип? Если ты не создал экземпляр класса, то ты его просто не создал, а class или struct в любом случае остаётся типом, просто ты можешь создать из них экземпляры, в случае с классом в куче, а со структурой на стеке.
Денис Бредун, я это написал автору ответа, потому что то, что он написал звучит странно хотя бы потому, что нельзя создать экземпляр статического класса явно (через new). А он пишет так, как будто можно.
Первое на что тебе нужно обратить внимание -- это на типы значений (Value Type) и ссылочные типы (Reference Type). Это прямо основа, которую нужно хорошо понимать. Где в метод копируется ссылка, а где всё значение. Что такое стек и что такое куча (Heap).
Ещё вот что подумал. А может быть, та программа, про которую ты говоришь, установила сервис, который при старте винды запускается. А программа посылает команды сервису, который делает работу на диске С.
Покупаешь книгу, создаёшь проект, в котором пишешь все примеры из книги с комментариями. Потом будешь к этому проекту возвращаться, чтобы подсмотреть, что как делается, так как с головы вылетело, потому что ещё мало применял. А дальше нужно долго и много писать, чтобы дошло до автоматизма и читать углубленно некоторые темы. Изучать ещё лучше (больше) то, что не очень хорошо освоил, а такое, думаю, будет.
А Changeable (тип свойства с именем Guid не string, а Guid):