C# 我如何从一个私人空间获取信息并将其放入另一个空间
我想从一个私人空间获取信息,然后将其放入另一个空间。我需要这样做,但不能在同一部分中运行它们,因为有人告诉我,这与我希望代码执行的操作无关。以下是无法在dlg2.selectedPath中工作的代码,该路径将从按钮private void中识别出来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();
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);
这已经得到了答复。相关:这是两个关于同一段代码的不同查询,我从他们那里得到信息来解决我遇到的每个问题。这已经得到了回答。相关:这是两个关于同一段代码的不同查询,我从这两个查询中获得信息来解决我遇到的每个问题。