【发布时间】:2014-03-15 16:25:42
【问题描述】:
我的笔记本有一个非常烦人的问题。我有一个带系统的内部 SSD 驱动器和一个用于大型游戏的外部旧 HDD 驱动器(在光盘托架中)。问题是,在每 10 秒不活动之后,HDD 驱动器就会继续旋转。无论如何都会发生这种情况 - 尝试了一切(包括 Windows 电源管理),但没有运气 - 磁盘每次都会完全忽略所有设置。这会在减速后尝试访问新数据时造成无法忍受的延迟,这使大多数游戏无法玩。这些不断的加速/减速也会缩短磁盘寿命。
因此,在尝试了一些方法后,我决定编写一个 C# 应用程序,该应用程序将简单地计算下面列表中随机文件中的行数 - 位于外部驱动器上,通过逐行读取文件。它是一个 winforms 应用程序,但方法 keepSpinning 在单独的线程中调用。
List<string> filesToSpin = new List<string>();
public Form1()
{
filesToSpin.Add(@"D:\book\Generic_User_Guide.pdf");
filesToSpin.Add(@"D:\book\Quick Guide.pdf");
filesToSpin.Add(@"D:\book\pck_ls.pdf");
filesToSpin.Add(@"D:\book\guide_amd64.pdf");
}
private void keepSpinning()
{
while(someKeepAliveVariable)
{
Random r = new Random();
int index = r.Next(filesToSpin.Count);
string spinThis = filesToSpin[index];
int counter = 0;
string line;
Console.WriteLine("Reading file: " + spinThis);
System.IO.StreamReader file =
new System.IO.StreamReader(spinThis);
while ((line = file.ReadLine()) != null)
{
counter++;
}
file.Close();
Console.WriteLine("Read {0} lines.", counter.ToString());
Thread.Sleep(2000);
}
}
嗯。令人惊讶的是,这也不起作用。它工作了一段时间,但它继续打印读取文件的信息但磁盘停止。我猜驱动器正在以某种方式缓存这些文件。行计数方法也非常占用 CPU。 任何有关代码更改的建议都会有所帮助,也期待任何其他解决方案。
【问题讨论】:
标签: c# hard-drive