首页 > 其他 > 详细

Thread调用SaveFileDialog

时间:2018-05-27 11:36:59      阅读:194      评论:0      收藏:0      [点我收藏+]
        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); }); } } }

 

Thread调用SaveFileDialog

原文:https://www.cnblogs.com/xbzhu/p/9095305.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!