2014-01-19 2 views
0

Посмотрите на этом коде:Отображения формы, в теме - C#

static Thread t1; 
static ThreadStart ts1; 

void my() 
{ 
    this.Hide(); 
    Form2 frm2 = new From2(); 
    frm2.Show(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    ts1 = new ThreadStart(my); 
    t1 = new Thread(ts1); 
    t1.Start(); 
} 

В my функции есть некоторые коды ведьмы скрывают эту форму и открывают Form2, но есть проблема. Когда t1 запускается и форму2 открывается, t1 делается так, что form2 тоже будет закрыт!

Что мне делать, чтобы исправить это?

Благодаря

+1

Почему вы думаете, что нужно использовать более чем одну нить для форм? У вас есть только один пользователь за раз. –

+0

Нет, это просто пример. Я делаю что-то еще ... – user3171943

+2

Трудно сказать, что вам нужно сделать на примере. Несколько потоков для нескольких форм обычно не являются хорошей идеей, если вы описываете, что вы пытаетесь выполнить, кто-то может помочь вам лучше. –

ответ

2

ли все UI вызовы в потоке пользовательского интерфейса. Всегда. Скрыть и открыть формы в потоке пользовательского интерфейса.

+0

как я могу это сделать? – user3171943

+1

Не начинайте новую тему ... –

+1

Нравится это: https://www.google.com/webhp?complete=1&hl=ru#complete=1&hl=ru&q=winforms+call+on+ui+thread – usr

0

изменить метод:

void my() 
     { 
      this.Invoke((MethodInvoker)delegate 
      { 
       this.Hide(); 
       Form frm2 = new Form(); 
       frm2.Show(); 
      }); 
     } 
+0

Эффективное устранение нити. Мог бы также оставить его тогда. –

Смежные вопросы