Есть элементы GUI (5ть кнопок : вперед ,назад ,влево ,вправо ,стоп) и текстовое поле ,куда будут заноситься результаты выполнения команд(если пользователь нажал кнопку "вперед" ,то в текстовое поле пишется "движение вперед"). Нужно реализовать следующее ,если пользователь,например , нажал кнопку "вперед" ,то в текстовое поле пишется "движение вперед" до тех пор ,пока не нажата кнопка "стоп".
пытался реализовать этот алгоритм с помощью тредов . Вот что получилось :
- Код: Выделить всё
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ArduinoProject
{
public partial class myForm : Form
{
public int cycleNumber;
void sendCommands(string commandName)
{
CheckForIllegalCrossThreadCalls = false;
myTextBox.Text += commandName;
CheckForIllegalCrossThreadCalls = true;
}
private void selectSycle()
{
//for (; ; )
{
switch (cycleNumber)
{
default:
break;
case 1:
sendCommands("move forward");
break;
case 2:
sendCommands("mowe back");
break;
case 3:
sendCommands("turn right");
break;
case 4:
sendCommands("turn left");
break;
}
}
}
public myForm()
{
InitializeComponent();
Thread Syclerun = new Thread(new ThreadStart(selectSycle));
Syclerun.Start();
}
private void moveForward_Click(object sender, EventArgs e)
{
cycleNumber=1;
selectSycle();
}
private void turnLeft_Click(object sender, EventArgs e)
{
cycleNumber=2;
selectSycle();
}
private void turnRight_Click(object sender, EventArgs e)
{
cycleNumber=3;
selectSycle();
}
private void moveBack_Click(object sender, EventArgs e)
{
cycleNumber=4;
selectSycle();
}
private void Pause_Click(object sender, EventArgs e)
{
}
}
}
недостаток этого кода заключается в том ,что форма быстро заполняется текстом (например ,если я нажал кнопку "вперед" ,то текстом "движение вперед") ,при этом никакие
- Код: Выделить всё
System.Threads.Sleep()