Страница 2 из 2
Re: Прошу прощения за возможный ОФФтоп, есть знатоки C#?
Добавлено: 31 мар 2015, 14:57
selenur
Есть простой способ получить доступ к элементам формы из любого потока, вот таким способом:
Код: Выделить всё
//***** начало процедуры ******
this.Invoke((MethodInvoker)delegate {
//тут твой код
});
//***** окончание процедуры ******
Но так делать конечно очень неправильно.......
Re: Прошу прощения за возможный ОФФтоп, есть знатоки C#?
Добавлено: 31 мар 2015, 17:35
Bmax77
А можно попадробней, в какую процедуру это вставлять
и "тут твой код"
код чего, обработчика порта?
Re: Прошу прощения за возможный ОФФтоп, есть знатоки C#?
Добавлено: 31 мар 2015, 21:30
selenur
Bmax77 писал(а):А можно попадробней, в какую процедуру это вставлять
и "тут твой код"
код чего, обработчика порта?
Ну вот упрощенный пример:
Код: Выделить всё
private bool _connected; //определение необходимости работы потока
private BackgroundWorker _theads; //сам поток
//событие кнопки запуска отдельного потока
private void btStart_Click(object sender, EventArgs e)
{
_connected = true;
//Создаем поток, и подключаем к нему процедуру
_theads = new BackgroundWorker();
_theads.DoWork += TheadsStart;
//Запустим поток
_theads.RunWorkerAsync();
}
//событие остановки потока
private void btStop_Click(object sender, EventArgs e)
{
_connected = false;
}
//отдельный поток
private void TheadsStart(object sender, DoWorkEventArgs e)
{
while (_connected)
{
this.Invoke((MethodInvoker)delegate {
//***** в этих пределах возможен доступ к элементам формы, хотя и нежелателен****
label1.text = "текущее время:" + datetime;
//********
});
}
}
Re: Прошу прощения за возможный ОФФтоп, есть знатоки C#?
Добавлено: 01 апр 2015, 13:08
Bmax77
В общем не знаю по чему но ни какие извращения к положительному результату не привели.
Тогда я принципиально изменил подход.
Нажатие кнопки лишь дает толчек к посылке первой команды в мк, а дальше по каждому приходу в порт Ready, вызывается Invoke, который посылает следующую команду и так до достижения конца буфера с командами.
Вот теперь вроде все заработало правильно, видно как отрабатываются даже самые мелкие шаги.