Николай, Второе ложное убеждение, что код методов классов размещается в динамической памяти. ))) У всех методов классов есть скрытый первый аргумент, в который передается адрес инстанса класса. (Если обьяснять простыми словами). Поэтому размер методов не влияет на размер выделяемой памяти для инстанса класса.
Роман, Вы застряли в своих убеждениях. )) Нет затыка. Создается менеджер, что будет хранить состояние приложения, для примера ITestManager, определяем его на singletone и он и будет опрашиваться в методе-фабрике какую реализацию предоставить.
А Transient определение не кеширует обьект и поэтому всегда будет возвращаться нужный, что создан на базе условия по значению из ITestManager
Роман, У вас в методе фабрике доступен serviceProvider и из него вы можете получить все, что нужно. Для примера ISmtpConfiguration, где есть флаг UseSSL.
Это стандартная практика.
Роман Кофф, "Результат первого вычисления остается в регистре и берется оттуда." а почему он должен это делать?
Ни один оптимизатор кода такое делать не будет. Результат функции может зависеть от времени запуска или выдавать вообще случайное значение, и оптимизатор это не может узнать.
"Если я меняю адрес с 127.0.0.1 на другой..." Что-то вы темните, замена строкового значения на другое строковое значение никак не должна влиять на компиляцию.
А чем не устраивает "Просто вызывать break внутри цикла, где выпоняется поток и выходит соответственно из функции, не особо устраивает", чем он будет отличаться для вас от while (isActive) { .... }?