class testapplication
{
static void ProcessString(string s)
{
{
Directory.Move("@C:/Users/Public/TestFolder", "@C:/Users/Public/TestFolder1");<1
Directory.Move("@C:/Users/Public/TestCase", "@C:/Users/Public/TestCase1");<2
}
}
}
对于像这种情况的例子,它只能运行1而2不能激活。
答案 0 :(得分:0)
[Directory.Move Method (String, String)][1]
移动文件或 目录及其内容到新位置。
因此,在执行第二个命令时,源变为空。如果您需要获取testFolder的副本,作为testfolder1和testFolder2并删除测试文件夹,我更喜欢您先复制然后执行移动
try
{
Directory.Copy(@"c:/Users/Public/TestFolder", @"c:/Users/Public/TestFolder1",true);// will take a copy of the directory TestFolder1
Directory.Move(@"c:/Users/Public/TestCase", @"c:/Users/Public/TestCase1");//will move TestFolder to TestFolder2
}
catch{//handle exception here}
答案 1 :(得分:0)
您的代码描述了一个移动操作,该操作将导致第二行出错。复制操作将成功:)
答案 2 :(得分:0)
我认为在移动之前应检查源文件夹的可访问性。
请参阅check Check if directory is accessible
我只是在我的电脑上测试。它适用于以下代码
if(CanRead(@"C:/Users/hai2/Desktop"))
Directory.Move(@"C:/Users/hai2/Desktop", @"C:/Users/hai2/Desktop1");// command 1
if(CanRead(@"C:/Users/hai2/Links"))
Directory.Move(@"C:/Users/hai2/Links", @"C:/Users/hai2/Links1");//command 2
希望有所帮助
答案 3 :(得分:0)
如果要同时执行两个操作,则可以在两个单独的线程中启动它们。最好的方法是使用Task
功能。
var move1 = Task.Factory.StartNew(() => Directory.Move("@C:/Users/Public/TestFolder", "@C:/Users/Public/TestFolder1"));
var move2 = Task.Factory.StartNew(() => Directory.Move("@C:/Users/Public/TestCase", "@C:/Users/Public/TestCase1"));
Task.WaitAll(move1, move2); // will wait until work is done
它将启动两个异步Directory.Move
操作,并且只有在两个操作完成时才会继续。