在线程里面要改变主进程的一个值,并通知主进程(如进度条),以及资源占用自动延时

来源:互联网 发布:剑网三卡卢比捏脸数据 编辑:程序博客网 时间:2024/05/22 06:21
 1.
public delegate void Clear();              /// <summary>        /// 检测生效时间是否已到,到了就进行覆盖        /// </summary>        public void CoverData() {            while (true)            {                if (!StopCover)//!StopCover                {                    if (DateTime.Now >= EffectTime)//DateTime.Now >= EffectTime                    {     //如果生效时间到了                        //Thread.Sleep(2000);                        Invoke(new Clear(delegate(){      //委托类型  里面为匿名方法                            mpy.currentPlaylist.removeItem(mpy.currentMedia);                            mpy.currentPlaylist.clear();                            mpy.Ctlcontrols.stop();}));                        //清空当前文件夹                        ClearDirectory(FilePath);                        //备份文件                        if (!Directory.Exists(FileDefaultPath))                            Directory.CreateDirectory(FileDefaultPath);                        foreach (string item in Directory.GetFiles(FileDownPath))                        {                            File.Copy(item, FileDefaultPath + Path.GetFileName(item), true);                        }                        //覆盖                        foreach (string item in Directory.GetFiles(FileDownPath))                        {                        aa:try                            {                                File.Copy(item, FilePath + Path.GetFileName(item), true);                            }                            catch {                                Console.WriteLine("覆盖异常,重新覆盖!");                                goto aa;                            }                            Console.WriteLine("文件:" + Path.GetFileName(item) + "覆盖成功!");                        }                        Console.WriteLine("数据覆盖成功!");                        StopCover = true;                        //数据同步完成,更新播放列表                        InitializePlayList();   //重置播放列表                        Console.WriteLine("播放列表更新成功!");                    }                }                Thread.Sleep(0);            }        }
2.
 
delegate void SetTextCallback(string text);        private void AddText(string text)        {            if (this.listBox1.InvokeRequired)            {                SetTextCallback d = new SetTextCallback(AddText);                this.Invoke(d, new object[] { text });            }            else            {                this.listBox1.Items.Insert(0, text);                            }        }        


原创粉丝点击