Причина, по которой ваша форма зависает, заключается в том, что основной поток (тот, который создал и отображает пользовательский интерфейс) работает все время.
У вас есть несколько возможностей предотвратить это.
Один из них - запускать потоки, которые работают в фоновом режиме (хотя это может быть сложно, потому что вам нужно убедиться, что все, что обновляет пользовательский интерфейс, передает эту ответственность потоку пользовательского интерфейса, потому что другим потокам не разрешено изменять что-либо, созданное в основном потоке. ), как вы делаете в своем коде, а другие используют шаблон async / await или, например, BackgroundWorkers.
В вашей реализации есть несколько проблем.
В chartTimer_Tick вы начинаете новую тему. Это будет происходить каждый раз, когда срабатывает таймер (то есть каждые 1000 мс). Вы не должны вызывать chartTimer.Start () в LivePulsePlot, так как таймер уже запущен (или вы не нажмете эту функцию). После того как вы вызвали Start () для таймера, он будет продолжать выполнять свою функцию 'Tick' каждые 1000 мс, пока вы не вызовете Stop ().
Кроме того, System.Windows.Forms.Timer выполняет свой метод в потоке пользовательского интерфейса, что приведет к зависанию пользовательского интерфейса во время работы функции. Вы можете использовать другой таймер, например, System.Timers.Timer, если вы хотите запустить что-то в фоновом режиме.
Одна вещь, которую вы должны принять во внимание, когда делаете это в фоновых потоках, это то, что всякий раз, когда вы хотите обновить некоторый элемент экрана, вам нужно будет попросить поток пользовательского интерфейса сделать это для вас (а не фоновый поток). ,
Подробнее об этом здесь:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/how-to-make-thread-safe-calls-to-windows-forms-controls
Еще лучший способ сделать это (хотя вам нужно потратить немного больше времени прямо сейчас) - это использовать async / await или BackgroundWorkers, но способ, которым вы начали его реализовывать, тоже может работать, с небольшим усилий.
Надеюсь, это поможет.