Если есть возможность, то надо посмотреть исходники mono на то, как происходит проверка, что кисть системная . И уже на уровне кода реализовать такую же без try/catch.
В данном случае предполагается, что существование инстансов этого контрола завершается с закрытием приложения (кнопки на формах обычно создаются вместе с формами и существуют до конца работы программы).
Это не правильный подход. Т.к. код вашего контрола могут использовать в mid приложении со многими окнами. И соответственно ваш контрол является memory leaks. П.С. Любой кастомный контрол обязан писаться как независимый объект, который будет использоваться в любой экосистеме без нарушения её работы.
Как вы закрываете ресурсы объектов типа Pen, Brush в winforms?
Просто вызываю Dispose. Для системных кистей проблем нет. Если кастомных кистей очень много и они переиспользуются, то надо писать класс кэширования который в себе хранит все созданные кастомные кисти. Для полных unmanaged ресурсов надо смотреть в сторону SafeHandle.
Это конечно хорошо. Но не вызывать Dispose для Pen, Brush в своем контроле - это нонсенс. Почитайте как управлять временем жизни unmanaged ресурсов в managed среде c#, и что будет если их не освобождать...
ИМХО.
Такие ненужные навороты как: Wi-Fi, Bluetooth вносят своей работой искажения в аудио сигнал.
Чем устройство проще и «заточение» под конкретную задачу: воспроизведение без искажений музыки, тем лучше.
+Как вы и сказали: ценник гуманнее.
Если есть возможность, то надо посмотреть исходники mono на то, как происходит проверка, что кисть системная . И уже на уровне кода реализовать такую же без try/catch.
Топику 14 лет. Проверил, Dispose системных кистей не вызывает исключение.
П.С. С текущим переходом всего на linux, советую присмотреться к Avalonia.
Это не правильный подход. Т.к. код вашего контрола могут использовать в mid приложении со многими окнами. И соответственно ваш контрол является memory leaks.
П.С. Любой кастомный контрол обязан писаться как независимый объект, который будет использоваться в любой экосистеме без нарушения её работы.
Просто вызываю Dispose. Для системных кистей проблем нет.
Если кастомных кистей очень много и они переиспользуются, то надо писать класс кэширования который в себе хранит все созданные кастомные кисти.
Для полных unmanaged ресурсов надо смотреть в сторону SafeHandle.
Я сталкивался с проблемой нехватки системных handle, когда писал кастомное извлечение картинок по требуемому размеру из ico файлов, как раз из-за того что не вызывал Dispose для unmanaged ресурсов.
Вот статья по кистям: https://www.codeproject.com/Articles/37916/Diposer-for-GDI-resources-Pen-Brush
Это конечно хорошо. Но не вызывать Dispose для Pen, Brush в своем контроле - это нонсенс. Почитайте как управлять временем жизни unmanaged ресурсов в managed среде c#, и что будет если их не освобождать...
П.С. И кодестайл для c# нетепичный...
Такие ненужные навороты как: Wi-Fi, Bluetooth вносят своей работой искажения в аудио сигнал.
Чем устройство проще и «заточение» под конкретную задачу: воспроизведение без искажений музыки, тем лучше.
+Как вы и сказали: ценник гуманнее.
www.pult.ru/product/pleer-cowon-plenue-d-gold-black/harakteristiki#parameters
Так до сих пор и строит, по пешеходной дорожке и через бетонный блок.