Многопоточность сложна, параллелизм затруднен. Фоновый рабочий и System.Timers - это конструкции, которые выполняются в собственном потоке.
winforms не допускает взаимодействия между потоками, которым принадлежит элемент управления (читай: который создал элемент управления), и потоками, которые этого не делают. Это отдельная тема, я не буду сейчас вдаваться в подробности - есть хороший материал, чтобы прочитать, почему это и как go об этом: https://visualstudiomagazine.com/articles/2010/11/18/multithreading-in-winforms.aspx
Есть инструменты для help, один из них - диспетчертаймер:
https://docs.microsoft.com/en-us/dotnet/api/system.windows.threading.dispatchertimer?view=netcore-3.1
Это специальный таймер, который вместо своего собственного потока планирует задачи в основном потоке. Основной поток в приложении winforms обрабатывает отрисовку элементов управления, показывая различные windows и c. например, этому 'принадлежат' все элементы управления.
Пример можно увидеть на msdn, я использовал его здесь, чтобы показать вам, что вы можете сделать:
public class TaskTrayApplicationContext : ApplicationContext
{
...
DispatcherTimer dispatcherTimer;
public TaskTrayApplicationContext()
{
...
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
// Fetch your data via a rest api
var myData = MyDataFunction();
// check and show dialog if the data is not okay
if(myData.Result.Value = 'NOT_OKAY!')
ShowMessage(this, myData.Result); // or something.
}
...
Теперь, поскольку здесь не используется второй поток, это означает, что основной поток пользовательского интерфейса может быть заблокирован от рисования windows, реагируя на ввод пользователя et c. потому что он занят работой в функции timer_tick. Это может произойти, например, если ваш вызов для отдыха занимает много времени.
Это приведет к зависанию вашего приложения и его зависанию. Это может быть проблемой, но, скорее всего, не будет, так что давайте сожжем этот мост, когда доберемся до него.