• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

потоки и Invoke

  • Автор темы Автор темы met123
  • Дата начала Дата начала
M

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.
 
Не очень то понял логику построения форм, но порекомендую следующие правила:
1. С формой нужно работать только из того потока в котором она создана, в противном случае invoke
2. GUI делают в одном основном потоке, доп потоки играют роль worker-ов
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab