none
Пересечение потоков RRS feed

  • Вопрос

  • Всем привет!
    В нижеприведенном коде
    по нажатию на кнопку btStart
    эта кнопка и текст-бокс tbDate устанавливаются в недоступное состояния,
    и запускается метод B.Start в пользовательском классе.
    Перед завершением этот метод оператором
    MainForm.Instance.End()
    запускает показанный здесь же метод End,
    который должен вернуть контролы в доступное состояние.
    На операторе

    btStart.Enabled	= true;

    получаю сообщение "Cross-thread operation not valid: Control 'btStart'..." 
    Что происходит - понятно, не понятно, что нужно сделать?

    private void btStart_Click (	object o, EventArgs e	)
    {	btStart.Enabled	=	false;
    	tbDate.Enabled	=	false;
    	Instance	=	this;
    	myClass B	=	new myClass();
    	Action actStart	=	new Action ( B.Start );
    	actStart.BeginInvoke( null,null );
    }
    public void End	()
    {	btStart.Enabled	=	true;
     	tbDate.Enabled	=	true;
    }



    • Изменено QazRdx 25 июня 2014 г. 14:51
    25 июня 2014 г. 12:10

Ответы

  • Сорри! Мозги мои дырявые!
    Все давно решено...
    ...слишком давно, чтобы помнить!

    public	void	End	()
    {	Invoke
    	(	new MethodInvoker
    		(	() =>
    		{	tbDate.Enabled	= true;
    			btStart.Enabled = true;
    	}));	
    }



    • Помечено в качестве ответа QazRdx 25 июня 2014 г. 14:51
    • Изменено QazRdx 26 июня 2014 г. 4:41
    25 июня 2014 г. 14:49