public void ThreadSaveFileDialog(string sourceFileName)
        {
            Thread importThread = new Thread(new ParameterizedThreadStart(SaveDialog));
            importThread.SetApartmentState(ApartmentState.STA); //重点
            importThread.IsBackground = true;
            importThread.Start(sourceFileName);

        }


        public static MainForm ScratchForm;//这个是主窗口
        private void SaveDialog(object sourceFileName)
        {
            SaveDialogShow(sourceFileName as string);

        }

        delegate void SaveDialogShowCallBack(string sourceFileName);
        private void SaveDialogShow(string sourceFileName)
        {
       //判断主窗口是否跨线程调用
if (ScratchForm.InvokeRequired) { SaveDialogShowCallBack stcb = new SaveDialogShowCallBack(SaveDialogShow); ScratchForm.Invoke(stcb, new object[] { sourceFileName }); } else {
          //将saveFileDialog附加上主From上,否则的话点击主窗口会把savefiledialog给遮挡住。重复点击保存会弹出多个savefiledialog result
= ScratchForm.saveFileDialog.ShowDialog(ScratchForm); if (result == DialogResult.OK) { string destFileName = ScratchForm.saveFileDialog.FileName; Task.Run(() => { File.Copy(sourceFileName, destFileName, true); }); } } }

 

相关文章:

  • 2021-07-16
  • 2021-05-18
  • 2021-04-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-09
  • 2022-12-23
猜你喜欢
  • 2021-08-31
  • 2021-10-17
  • 2022-03-02
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案