Многопоточность TeeChart & Media Element - PullRequest
0 голосов
/ 21 августа 2009

Я работаю в WPF, использую Media Element и WPF TeeChart (от Steema). Оба они видны и обновляются одновременно - во время воспроизведения видео график будет обновляться через регулярные промежутки времени, чтобы отображать данные, относящиеся к текущему местоположению в видео.

Проблема в том, что обновлению TeeChart требуется много времени, что блокирует видео, вызывая прерывистое воспроизведение.

Я немного поэкспериментировал с многопоточностью, чтобы попытаться найти решение для этого, но до сих пор не повезло. Я не могу диктовать, когда обновляются видео или диаграмма, на самом деле я подозреваю, что WPF работает таким образом, что любые элементы WPF всегда объединяются.

Кто-нибудь может придумать, что я могу сделать, чтобы решить эту проблему? На данный момент все, что я могу придумать, - это заменить один или оба этих элемента на эквивалент Win32 и разместить его соответствующим образом, но по многим причинам я оставляю это как последнее средство.

1 Ответ

1 голос
/ 27 ноября 2009

На тот случай, если вы до сих пор не решили эту проблему или не можете использовать ее в будущем, вы можете оптимизировать производительность TeeChart, как описано в статье «Диаграммы в реальном времени» здесь:

http://www.teechart.net/reference/articles/index.php

Это статья TeeChart VCL, но большая ее часть также относится к TeeChart для .NET

Также обратите внимание, что TeeChart для .NET не является поточно-ориентированным. Вам нужно дать достаточно времени графику, чтобы нарисовать себя. Вы можете сделать это с помощью неактивного вызова, чтобы рисование диаграммы завершилось в заданное время, или использовать метод асинхронного рисования со свойством AutoRepaint, например:

tChart1.AutoRepaint = false;
Random r = new Random();
for(int i = 0; i <500; i++)
{
      tChart1[0].Add (i,r.Next(800),Color.Blue);
}
tChart1.AutoRepaint = true;
tChart1.Refresh(); 
...