假设 点击按钮启动一个线程
Thread t1 = new Thread(() => RunAddFile(tb_file.Text.Trim())); //创建一个线程
t1.Start();现在在线程中修改主线程创建的控件tb_log的文本
#region 自定义方法RunAddFile主要是通过线程序来实现对文件夹下所有子文件夹和文件的遍历 ////// path 是路径 /// /// public void RunAddFile(string path) { DirectoryInfo dir = new DirectoryInfo(path); DirectoryInfo dirD = dir as DirectoryInfo; FileSystemInfo[] files = dirD.GetFileSystemInfos(); foreach (FileSystemInfo i in files) //对单个FileSystemInfo进行判断,如果是文件夹则进行递归操作 { //如果是文件夹 //System.Windows.Forms.MessageBox.Show(i.Name+" "+i.FullName); FileInfo file = i as FileInfo; if (file != null) { AddOkPath(file.DirectoryName + "\\" + file.Name); } else { string newpath = ""; newpath = i.FullName; RunAddFile(newpath); } } } ////// 修改 日志 /// /// private void AddOkPath(string path) { if (this.tb_log.InvokeRequired) { ActionactionDelegate = delegate(string txt) { StringBuilder sb = new StringBuilder(); sb.Append(tb_log.Text + System.Environment.NewLine); sb.Append("目录:" + txt + System.Environment.NewLine); tb_log.Text = sb.ToString(); //RunAddFile(txt); //这句导致 报 未将引用对象设置到实例 li_img.Add(path); }; this.tb_log.Invoke(actionDelegate, path); } }