Eu mudei um pouco o cenário para ver se ficava mais fácil estou na seguinte situação.
Estou com um projeto WindowsForm criei um botão que vai ler um arquivo txt e atualizar meu TextBox a cada 2 segundos.
 private void btConect_Click(object sender, EventArgs e)
        {                     
                Thread demoThread = new Thread(new ThreadStart(AtualizaTextBox));
                demoThread.Start();                                     
        }
 private void AtualizaTextBox()
        {
            Thread.Sleep(TimeSpan.FromSeconds(2));
            string confMinhaVPN = Settings.GetPathConfOpenVPN();
            using (var fluxo = new FileStream(path + @"\meulog.log", FileMode.Open))
            using (var leitor = new StreamReader(fluxo))
            {
                while(!leitor.EndOfStream)
                {
                    tbMonitor.Text = leitor.ReadLine();
                }
            }               
        }
Também cai no mesmo problema: "controle 'tbMonitor' acessado de um thread que não é aquele no qual foi criado"