LoneRay
@LoneRay
Начинающий кодировщик.

Почему нет доступа к форме при использовании потока?

Помогите пожалуйста. Что я делаю не так?
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;

namespace Многопоточность
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int i = 0;
            Text = "Таймер. Время: " + i;
            Timer time = new Timer();

            var bw = new BackgroundWorker();
            bw.DoWork += (o, eo) =>
            {
                Invoke(new Action(() => {
                    for (;;)
                    {
                        i = time.Time(i);
                        Thread.Sleep(1000);
                        Text = "Таймер. Время: " + i;
                    }
                }));
            };
            bw.RunWorkerAsync();
        }
    }

    public class Timer
    {
        public int Time(int i)
        {
            i++;
            return i;
        }
    }
}
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Как изменить textbox формы из другого класса?

bw.DoWork += (o, eo) =>
{
  for (;;)
  {
    i = time.Time(i);
    Thread.Sleep(1000);
    // https://msdn.microsoft.com/ru-ru/library/zyzhdc6b.aspx
    Invoke(new Action(() => {
      Text = "Таймер. Время: " + i;
    }));
  }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы