потоки и Invoke

Тема в разделе ".NET", создана пользователем met123, 15 май 2007.

  1. met123

    met123 Гость

    короче следующая ситуация
    есть формочка с кнопкой , при нажатии которой создаеться поток и в єтом потоке создается другая форма,как модальная (что б поток не завершился) , тоже припустим с кнопкой. Вот. по идеи форма создана єтим потоком и из него можна лазить по контролам єтой формы. Но если при нажатии на кнопку этой формы мне нужно, к примеру, отобразить диалог открытия файла или выбора папки ..... ниче не выходит!!!
    это вот первая форма:



    {
    public partial class Form1 : Form
    {

    public Form1()
    {
    InitializeComponent();
    }


    public void start()
    {
    Form2 frm = new Form2();


    }

    private void button1_Click(object sender, EventArgs e)
    {
    Thread mythread = new Thread(new ThreadStart(start));

    mythread.Start();
    mythread.Join();

    }
    }
    }

    это вот вторая форма:



    namespace WindowsApplication16
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }

    public delegate void browser();
    public void open()
    {
    folderBrowserDialog1.ShowDialog();

    }
    public void start()
    {
    Invoke(new browser(open));
    }

    private void button1_Click(object sender, EventArgs e)
    {
    Invoke(new browser(open));




    }
    }
    }



    ошибка та же :

    Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it.
     
  2. mr_ST

    mr_ST Гость

    Не очень то понял логику построения форм, но порекомендую следующие правила:
    1. С формой нужно работать только из того потока в котором она создана, в противном случае invoke
    2. GUI делают в одном основном потоке, доп потоки играют роль worker-ов
     
Загрузка...
Похожие Темы - потоки Invoke
  1. Mady
    Ответов:
    3
    Просмотров:
    1.476
  2. 203
    Ответов:
    4
    Просмотров:
    1.752
  3. Senset
    Ответов:
    0
    Просмотров:
    2.332

Поделиться этой страницей