C#-如何将多个文件保存到硬盘中,直到硬盘已满而不会崩溃

C#-如何将多个文件保存到硬盘中,直到硬盘已满而不会崩溃,c#,console,console-application,capture,screen-capture,C#,Console,Console Application,Capture,Screen Capture,我有一个控制台应用程序,它可以执行“屏幕捕获”,并将图像保存在“c:/”目录中,其中包含无限多的图片。我希望该应用程序能够继续捕获和保存图片,直到硬盘满了为止,而不会使应用程序崩溃。那么如何做到这一点呢?如何防止应用程序崩溃?简单:捕获尝试将文件保存到全驱动器时发生的异常。例如: var image = GetScreenImage(); // or however you're capturing the screen try { image.Save(filename); } ca

我有一个控制台应用程序,它可以执行“屏幕捕获”,并将图像保存在“c:/”目录中,其中包含无限多的图片。我希望该应用程序能够继续捕获和保存图片,直到硬盘满了为止,而不会使应用程序崩溃。那么如何做到这一点呢?

如何防止应用程序崩溃?简单:捕获尝试将文件保存到全驱动器时发生的异常。例如:

var image = GetScreenImage();  // or however you're capturing the screen
try
{
    image.Save(filename);
}
catch (Exception ex)
{
    // handle the exception here.
}
你没有说你得到了什么样的图像,所以我不能给你一个确切的场景。但概念是一样的:如果试图保存图像时引发异常,则捕获异常,清理所有流或可能打开的任何内容,然后继续。如果需要,请显示错误消息。将错误记录到文件中,尽管您可能希望该日志文件位于不同的驱动器上


这将防止应用程序崩溃。不知道它会对需要写入磁盘的任何其他正在运行的应用程序产生什么影响。

这听起来是个坏主意,但这不关我的事。无论如何,您可以在每次保存后获得剩余空间,并将其与该分区的总空间进行比较。不会很准确,但很接近。另外,对于将来的问题,请包含一些代码,并展示您解决问题的尝试。否则,您的问题很可能会被删除。请定期使用DriveInfo.AvailableFreeSpace。当它下降到一两个gig以下时退出。请永远不要执行
捕获(异常示例)
,因为这几乎和使用
转到
一样糟糕。在这种情况下,从内存中,
System.IO.IOException
是要捕获的异常。