Я бы предложил один из 2 вариантов.
1) Сделайте саму диаграмму отдельной формой WPF, встроенной с основным пользовательским интерфейсом, и используйте Invoke вместо BeginInvoke для обновления диаграммы (это приведет к зависанию пользовательского интерфейса диаграммы при обновлении, но кого это волнует)
2) Используйте DispatchTimer на стороне пользовательского интерфейса для извлечения данных вместо того, чтобы обработка подталкивала их к пользовательскому интерфейсу ... по моему опыту, BeginInvoke никогда не работает очень хорошо.