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.
есть формочка с кнопкой , при нажатии которой создаеться поток и в єтом потоке создается другая форма,как модальная (что б поток не завершился) , тоже припустим с кнопкой. Вот. по идеи форма создана єтим потоком и из него можна лазить по контролам єтой формы. Но если при нажатии на кнопку этой формы мне нужно, к примеру, отобразить диалог открытия файла или выбора папки ..... ниче не выходит!!!
это вот первая форма:
{
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.