返回后执行代码

时间:2017-12-11 10:24:57

标签: c# thread-sleep try-finally

在我的网络API上,我想在return语句后删除一个文件夹。

public string Post(HttpRequestMessage request)
{
    //Do cool stuff with request
    try
    {
        return "10.0.2.2:8080/myFolder/index.html";
    }
    finally
    {
        Thread.Sleep(60000);
        Directory.Delete(myFolder, true);
    }
}

我期望制作POST的设备可以获取return语句并加载html文件。一分钟后,我们删除此文件以释放服务器上的空间。

返回语句实际上是在finally语句之后发送的。

如何在带延迟的return语句之后运行代码,而不延迟返回?

2 个答案:

答案 0 :(得分:3)

无论如何也无法做到这一点,因为你会保持资源(例如网络服务器线程)忙着等待。

编写另一个进程(最好是Windows服务,如果你在Windows上)定期检查目录并删除某个年龄的所有文件。

答案 1 :(得分:0)

返回后无法执行代码 在我看来,如果在1m之前创建的文件将其删除

,您可以检查文件
DirectoryInfo objDirectoryInfo = new 
                DirectoryInfo(Server.MapPath("~/files"));
foreach (FileInfo File in objDirectoryInfo.GetFiles) {
    if ((File.LastAccessTime < DateTime.Now.AddMinutes(-1))) {
        File.Delete();
    }
}