none
Добавить контрол из потока RRS feed

  • Общие обсуждения

  • Понимаю, вопрос изъезжен, но тем не менее не могу толком заставить работать программу.

    Есть Form1 где в потоке создаётся класс:

    private void createThread(){ Working work = new Working();

    } private void startButton_Click(object sender, EventArgs e){ Thread thread = new Thread(createThread); thread.Start(); }

    В классе нужно создать контрол (пикчерБокс) и разместить его на форме без каких-то задержек и залипаний программы.

    Намекните как лучше реализовать.

    3 ноября 2013 г. 11:34

Все ответы

  • Не важно, где Вы создаете экземпляр класса. Важно, что управлять Control-ом можно лишь из того потока, в котором он был создан. Если Control создан в потоке, отличном от потока создания формы, то форма им полноценно "владеть" не сможет.
    3 ноября 2013 г. 12:06
  • Это я понимаю, но что значит форма не сможет им владеть ? Я не могу из потока на форму добавить контрол ? Как тогда реализовывается добавление контрола на форму из потока ?

    • Изменено geforse 3 ноября 2013 г. 12:18
    3 ноября 2013 г. 12:18
  • Если задаете такой вопрос, значит НЕ понимаете. Добавление на форму Control-a нужно выполнить в потоке формы. Посмотрите описание свойства формы InvokeRequired и метода Invoke (или BeginInvoke)
    3 ноября 2013 г. 12:24
  • форма создает класс >> класс создает pictureBox1 >> отобразить это в форме

    если вам это нужно что бы отобразить некий рисунок то предлагаю использовать Graphics g;

    public void SomeMethod()
    {
    using {Graphics g = this.CreateGraphics}
    g.DrawImage(/*.image implementation.*/)
    }

    3 ноября 2013 г. 17:27