如何在c#中操作两个命令?

时间:2015-12-15 02:56:19

标签: c#

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不能激活。

enter image description here

4 个答案:

答案 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操作,并且只有在两个操作完成时才会继续。