2

Есть задача: дано 3 потока, которые генерируют значения(0-9, 10-99, 100-250), которые записываются в общий массив, и выводятся на экран. Также нужно додавать их в сумму, которая должна находится в пределах от 11500 до 12500, числа при этом с массива удаляются..... Как мне отображать эти числа в textbox?

List < int > numbers = new List < int > ();
int sum = 0;

public Second() { InitializeComponent(); Task first = Task.Factory.StartNew(() => GenerateNumber(0, 9, FirstOutput)); Task second = Task.Factory.StartNew(() => GenerateNumber(10, 99, SecondOutput)); Task third = Task.Factory.StartNew(() => GenerateNumber(100, 200, ThirdOutput)); }

private void GenerateNumber(int low, int hight, TextBox textBox) { Random random = new Random(); int number; while (true) { number = random.Next(low, hight); numbers.Add(number); textBox.Text = number.ToString();

Task.Delay(200);

} }

meine
  • 7,394

1 Answers1

3

Попробуйте через invoke, пример функции:

public class ActionThreadSafe
    {
        public static void Run(Form frm, Action act)
        {
            if (frm == null)
            {
                return;
            }
            if (frm.InvokeRequired)
            {
                frm.BeginInvoke(act);
            }
            else
            {
                act();
            }
        }
    }

Использоавание

    ActionThreadSafe.Run(this, (Action)(() => this.Control.Text = "тест"));
NewView
  • 2,308