C# 我如何从一个私人空间获取信息并将其放入另一个空间

C# 我如何从一个私人空间获取信息并将其放入另一个空间,c#,variables,parameters,methods,C#,Variables,Parameters,Methods,我想从一个私人空间获取信息,然后将其放入另一个空间。我需要这样做,但不能在同一部分中运行它们,因为有人告诉我,这与我希望代码执行的操作无关。以下是无法在dlg2.selectedPath中工作的代码,该路径将从按钮private void中识别出来 private void button1_Click(object sender, EventArgs e) { FolderBrowserDialog dlg2 = new FolderBrowserDialog();

我想从一个私人空间获取信息,然后将其放入另一个空间。我需要这样做,但不能在同一部分中运行它们,因为有人告诉我,这与我希望代码执行的操作无关。以下是无法在dlg2.selectedPath中工作的代码,该路径将从按钮private void中识别出来

    private void button1_Click(object sender, EventArgs e)
    {
       FolderBrowserDialog dlg2 = new FolderBrowserDialog();
        if (dlg2.ShowDialog() == DialogResult.OK)
        //do whatever with dlg.SelectedPath
        {
            backgroundWorker1.RunWorkerAsync();
        }
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {

            DirectoryInfo source = new DirectoryInfo(dlg.SelectedPath);
            DirectoryInfo target = new DirectoryInfo(dlg2.SelectedPath);

            DirectoryInfo dir = new DirectoryInfo(dlg.SelectedPath);
            FileInfo[] fis = dir.GetFiles("*", SearchOption.AllDirectories);
            foreach (FileInfo fi in fis)
            {
                if (fi.LastWriteTime.Date == DateTime.Today.Date)
                {
                    File.Copy(fi.FullName, target.FullName + "\\" + fi.Name, true);
                }
            }

        }

任何帮助都将不胜感激

后台工作程序无法访问dlg2.SelectedPath,因为它在另一个线程中工作。它位于UI线程中的dlg2 backgroundWorker位于另一个.net创建的线程中。必须使用Control.Invoke和使其工作所需的Control.Invoke


后台工作程序无法访问dlg2.SelectedPath,因为它在另一个线程中工作。它位于UI线程中的dlg2 backgroundWorker位于另一个.net创建的线程中。必须使用Control.Invoke和使其工作所需的Control.Invoke


您可以调用
backgroundWorker1.RunWorkerAsync(dlg2.SelectedPath)
。这将把字符串传递给工作者。在
DoWork
处理程序中,可以从
DoWorkEventArgs
实例获取值:

string selectedPath = (string)e.Argument;
DirectoryInfo target = new DirectoryInfo(selectedPath);

您可以调用
backgroundWorker1.RunWorkerAsync(dlg2.SelectedPath)
。这将把字符串传递给工作者。在
DoWork
处理程序中,可以从
DoWorkEventArgs
实例获取值:

string selectedPath = (string)e.Argument;
DirectoryInfo target = new DirectoryInfo(selectedPath);

这已经得到了答复。相关:这是两个关于同一段代码的不同查询,我从他们那里得到信息来解决我遇到的每个问题。这已经得到了回答。相关:这是两个关于同一段代码的不同查询,我从这两个查询中获得信息来解决我遇到的每个问题。