Я пытался найти другой вопрос, подобный этому, так как он определенно кажется чем-то, что, возможно, задавалось раньше; но я не смог его найти.
По сути, у меня есть DataGridView
, который связан с BindingList<T>
. Я понимаю, что в целом привязка данных очень удобна и экономит много времени (наших разработчиков). Тем не менее, существует значительная проблема производительности с этой сеткой, которая очень велика.
Исходя из предыдущего опыта, я вполне уверен, что производительность может быть значительно улучшена путем ручного обновления только видимых ячеек в DataGridView
на таймере, а не реализации INotifyPropertyChanged
(на самом деле не осуществимо опция, так как многие значения в этой сетке меняются десятки раз в секунду) или вызывают Refresh
. Но есть проблема: если я вручную обновляю ячейки в сетке, каждое обновление вызывает set
соответствующего свойства для объекта с привязкой к данным, что, в сумме, приводит к значительному снижению производительности.
На самом деле нет необходимости совершать все эти set
вызовы, поскольку значения, которые я помещаю в ячейки сетки, извлекаются непосредственно из этих свойств (поэтому я в основном читаю значение а затем записывает его обратно себе).
Было бы неплохо, если бы я мог временно отключить эту функцию DataGridView
: на время отключите функцию, отвечающую за обновление основного источника данных на основе обновлений в сетке. Затем, когда я закончу обновлять его вручную, снова включите эту функцию, чтобы user updates do воздействовал на источник данных.
Я попытался использовать BindingSource
со свойством DataSource
, установленным на BindingList<T>
, и вызвать SuspendBinding
/ ResumeBinding
; но это не сработало. set
звонки продолжались.
Есть ли какой-нибудь способ выполнить то, что я собираюсь здесь? Я иду по неверному пути полностью?