【问题标题】:How to operate two command in c#?如何在c#中操作两个命令?
【发布时间】:2015-12-15 02:56:18
【问题描述】:
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。

【问题讨论】:

  • 将它添加到 try catch 块中,并检查它是否在第一次调用时抛出任何异常。
  • 您的意思是要并行运行它们吗?
  • 你要移动两个相同的目录,当然移动第一个目录就不行了,目录就没有了
  • 对不起!问题应该是错误的,现在更新了!
  • 首先你应该给出一个有效的路径:"@C:/Users/Public/TestFolder"应该是@"C:/Users/Public/TestFolder";将@放在"之外

标签: c#


【解决方案1】:

[Directory.Move Method (String, String)][1] 移动文件或 目录及其内容到一个新位置。

所以在执行第二个命令时,源变为空。如果您需要复制 testFolder,如 testfolder1 和 testFolder2 并删除 testfolder,我希望您先进行复制,然后再执行移动

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}

【讨论】:

  • 发现新问题并配图!你能告诉我在这种情况下有什么问题吗? :(
【解决方案2】:

您的代码描述了一个移动操作,这将导致第二行出错..复制操作将成功:)

【讨论】:

    【解决方案3】:

    如果你想同时执行两个操作,那么你可以在两个单独的线程中启动它们。最好的方法是使用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操作,并且只有当它们都完成时才会继续。

    【讨论】:

    • 发现新问题并配图!你能告诉我在这种情况下出了什么问题吗?
    • @Fabre 确保该目录没有文件,这些文件现在在其他应用程序中打开或忙碌。您不能移动此类目录。
    【解决方案4】:

    我认为应该在移动之前检查源文件夹的可访问性。

    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
    

    希望对你有帮助

    【讨论】:

    • 发现新问题并配图!你能告诉我在这种情况下出了什么问题吗?
    • 你应该在移动它之前“检查目录是否可以访问”
    猜你喜欢
    • 2020-07-11
    • 2020-11-20
    • 2021-04-03
    • 1970-01-01
    • 2017-05-05
    • 2019-07-28
    • 2018-03-28
    • 2014-12-22
    • 2022-01-12
    相关资源
    最近更新 更多