OK ...
Похоже, что WinForms и Threading в одной и той же программе - это то, что я не могу легко освоить.
Я пытаюсь сделать пользовательский Numeric Up Downиз двух графических блоков (используются кнопки) и текстовое поле.Да, я могу использовать стандартную форму NumericUpDown, но я хочу сделать другую, выглядящую по-другому.
Я попытался сделать это с таймерами (System.Windows.Forms.Timer).Проблема в том, что когда один таймер встречает «Thread.Sleep (int)», вся программа «засыпает».
Я пытался с потоками.Некоторые типы потоков не могут управлять пользовательским интерфейсом.Затем я попробовал это
private void declare_thread()
{
//some work
Thread delay = new Thread(new ThreadStart(delay0));
delay.Start();
//some more work
}
//other functions
private void delay0()
{
//delay_for_500ms.WaitOne();
this.Invoke((ThreadStart)delegate()
{
Thread.Sleep(500);
if (is_mouse_down)
timer1.Enabled = true;
});
}
Результат был таким же, как когда я использовал только таймеры.
Итак, я хочу сделать пользовательский Numeric Up Down.Но я не могу понять это правильно.Я знаю, что делаю это неправильно.Я хочу создать поток, который может управлять пользовательским интерфейсом и не заставляет всю программу останавливаться при вызове Thread.Sleep (int).
Пожалуйста, дайте мне ответы для начинающих.Пока что я не нашел хорошего ответа, который мог бы показать мне правильный путь, и его легко понять.