Метод выполняется, но не меняет элементы управления - PullRequest
0 голосов
/ 27 мая 2020

У меня 2 класса. Из моего класса 1 я запускаю 10 потоков в классе 2 с некоторыми методами из класса 2.

Теперь потоки вызывают метод в моем классе 1, методы, которые будут выполняться, проверили это с помощью окна сообщения. Но у меня также есть строка кода для добавления текста в текстовое поле, и это не выполняется.

Я уже пробовал это с помощью invoke.

Вот несколько фрагментов:

    private void LaunchButton_Click(object sender, EventArgs e)
    {
        Scanner s = new Scanner(IPText.Text, Convert.ToInt32(Number1Text.Text), Convert.ToInt32(Number2Text.Text), Convert.ToInt32(TimeoutText.Text));
        s.start(Convert.ToInt32(ThreadsText.Text));
    }

в этом фрагменте я вызываю метод start в классе 2.

Этот метод был вызван потоками из класса 2:

    public void AktuellerNummer(string Nummer)
    {
        LogText.Invoke(new Action(() =>
        {
            LogText.AppendText("Checking: " + Nummer);
            LogText.ScrollToCaret();
        }));
    }

Вот как потоки вызывают метод ,, AktuellerNummer ":

    Class1 class1 = new Class1();
    class1.AktuellerZahl(Zahl.ToString());

После вызова ничего не было добавлено, некоторые из вас знают причину?

С уважением.

1 Ответ

0 голосов
/ 27 мая 2020

Используя этот код в тестовом приложении в обработчике событий для нажатия кнопки, казалось, что он работает нормально. Текстовое поле было заполнено строками, как и ожидалось, может дать вам несколько идей, что попробовать?:

    new Thread(() =>
    {
        for(int i = 1; i < 20; i++) // simple for loop to simulate different numbers
        {
            Invoke(new Action(() =>
            {
                textBox1.AppendText(string.Format("Checking: {0}{1}", i, Environment.NewLine));
                textBox1.ScrollToCaret();
            }));
            Thread.Sleep(150); // slight delay so we can see things being populated
        }
    }).Start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...