Изучаю C#. Подскажите, почему поток не становится асинхронным после IsBackground
(окно просто подвисает пока едет кнопка)? Как правильно?
public delegate void HelperToColl();
public partial class Form1 : Form
{
HelperToColl HTC;
Random rnd = new Random();
public Form1()
{
InitializeComponent();
HTC = new HelperToColl(car_1_race);
}
private void Start_btn_Click(object sender, EventArgs e)
{
Thread car_1 = new Thread(car_1_race);
car_1.IsBackground = true;
Invoke(HTC);
}
public void car_1_race()
{
while (true)
{
Thread.Sleep(100);
Car_1_btn.Left += rnd.Next(1, 3);
}
}
}
Код у тебя странный... Ты пуляешь в отдельный поток метод, но НЕ запускаешь и вместо этого вызываешь делегат HTC.
Должно быть как-то вот так(Я набросал свой пример работы):
private void button1_Click(object sender, EventArgs e)
{
var thread=new Thread(WriteTxt);
thread.Start();
}
private void WriteTxt()
{
while (true)
{
if (!richTextBox1.InvokeRequired)//Если обращаешься к UI из того же потока
{
richTextBox1.AppendText("1\n");
}
else
{
Invoke(new Action<string>(richTextBox1.AppendText),"1\n");//Иначе делаем Invoke.
}
Thread.Sleep(1000);
}
}
И на заметку:
Потоки- это низкоуровневая штуку, сейчас более актуальны Task.
Вам не нужна многопоточность в вашем коде, поскольку изменение свойств контролов всё равно должно производиться в главном потоке.
Воспользуйтесь лучше современным async/await:
public partial class Form1 : Form
{
Random rnd = new Random();
public Form1()
{
InitializeComponent();
}
private void Start_btn_Click(object sender, EventArgs e)
{
RandomCarMovement();
}
private async Task RandomCarMovement()
{
while (true)
{
await Task.Delay(100);
Car_1_btn.Left += rnd.Next(1, 3);
}
}
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Подскажите, как вывести данные из sqlite в datagridview таким образом, чтобы привязать "DATE" и "FULLNAME" к конкретным столбцам datagridviewВариант с datasource не устраивает,...
Я хотел бы узнать как с помощью Selenium получить Cookie, c браузера по умолчаниюТо есть пользователь авторизуется на моем сайте, а потом скачивает...
C#, Visual Studio 2013В одной из форм проекта неожиданно исчезли ВСЕ ее элементы: кнопки, диаграмма, textBox - ВСЕ
Начал разбираться в WPF, и сразу столкнулся с такой проблемой: в коде есть переменная, которую я постоянно меняюОна отображается в форме в Label