@samodelkin1990

Вызвать из контроллера метод формы?

Делаю программу по принципу mvc на c#, в которой сперва создается класс Controller и в нем создается форма и создается поток. Скажите, почему данный код завершается ошибкой после паузы в потоке, который в классе Controller?
public class Controller
	{
		MainForm form;
		
		public Controller()
		{
			form= new MainForm();
			Thread thread= new Thread(new ThreadStart(run));
			thread.Start();
			form.ShowDialog();
		}
		
		public void run(){
			form.addText("Hello!");
                        Thread.Sleep(1000);
		        form.addText("Hello2!");
                }
		
		public static void Main(){
			new Controller();
		}
	}


public partial class MainForm : Form
	{
		
		public MainForm()
		{
			InitializeComponent();
		}
		
		
		public void addText(string text){
			this.richTextBox1.Text+= text;
		}
	}
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
Для синхронизации с основным потоком используется Invoke
form.Invoke(() => { form.addText("Hello!"); })
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@samodelkin1990 Автор вопроса
Ошибка:
недопустимая операция в нескольких потоках: попытка доступа к элементу управления
Ответ написан
Ваш ответ на вопрос

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

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