Вредно ли устанавливать один и тот же курсор для FrameworkElement много раз в секунду в приложении WPF? - PullRequest
0 голосов
/ 20 марта 2020

Мы используем компонент внешней библиотеки в нашем приложении WPF.

В зависимости от того, где находится мышь, курсор должен измениться.

Для этого компонент запускает события, которые нам нужно обработать в обработчиках OnSetCursor и OnResetCursor. События запускаются почти каждый раз, когда мышь перемещается над компонентом, поэтому сотни раз в секундах.

В примерах из библиотек они делают что-то вроде этого:

private void OnResetCursor(object sender, EventArgs args)
{
    if (myComponent.Cursor != System.Windows.Input.Cursors.Arrow)
        myComponent.Cursor = System.Windows.Input.Cursors.Arrow;
}

myComponent наследуется от FrameworkElement, именно здесь определяется Cursor.

Быстрый просмотр декомпилированного источника WPF показывает, что это просто автоматическое c свойство Cursor { get; set; }

Есть ли есть ли какой-либо недостаток для удаления чека?

private void OnResetCursor(object sender, EventArgs args)
{
    myComponent.Cursor = System.Windows.Input.Cursors.Arrow;
}

Комментарий к обзору кода подсказывает мне, что код не должен содержать эту проверку, если она не вызывает нежелательного поведения.

Быстрый тест на моих машинах не показывает странного мерцания и ощутимого влияния на производительность. Но, возможно, есть случаи, которые я пропустил или не могу проверить локально.

Я не нашел никаких замечаний по этому поводу в документации Microsoft

...