在子线程中使用 SaveFileDialog 无法弹出窗体,主要是我们需要用主线程去处理 SaveFileDialog

我们可以将子线程进行如下设置:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(saveDialog);
            t.IsBackground = true;

    t.SetApartmentState(ApartmentState.STA);//缺少这句话,就会出错误。
            t.Start();
        }

        public void saveDialog()
        {
            SaveFileDialog result = new SaveFileDialog();
            result.ShowDialog();
        }
    }

posted on 2014-12-29 17:31  aparche  阅读(2040)  评论(0编辑  收藏  举报