当我使用网络共享(92.168.0.XXX\path)时,RAM 的消耗会增加。问题不在于像 (C:) 这样的驱动器。有谁知道它可能是什么?要复制的文件大小约为 100GB ...
public void copy (String _quelldatei, String _zieldatei)
{
FileStream fsout = new FileStream(_zieldatei, FileMode.Create);
FileStream fsin = new FileStream(_quelldatei, FileMode.Open);
byte[] data = new byte[1048576];//in MiB
int readbyte;
while ((readbyte=fsin.Read(data,0,data.Length))>0)
{
fsout.Write(data, 0, readbyte);
BWkopieren.ReportProgress((int)(fsin.Position*100/fsin.Length));
}
fsin.Close();
fsout.Close();
}
我看了你的代码,怀疑这一行。
BWkopieren.ReportProgress((int)(fsin.Position*100/fsin.Length));
这是 BackgroundWorker 的一部分,对吗?这可能会导致问题,因为您为每次迭代制作了太多报告。
也许将报告进度减少至少 10 秒,并为放松 CPU 进程添加延迟至少 10 毫秒,然后重试。
var lastReport = DateTime.Now;
while ((readbyte = fsin.Read(data, 0, data.Length)) > 0)
{
fsout.Write(data, 0, readbyte);
if(DateTime.Now - lastReport >= TimeSpan.FromSeconds(10))
{
BWkopieren.ReportProgress((int)(fsin.Position * 100 / fsin.Length));
lastReport = DateTime.Now;
}
System.Threading.Thread.Sleep(10);
}