我有一个C#程序,该程序查询数据库(server3)以确定用户需要的文件,然后从(server1)复制这些文件到(server2)。
进一步简化:
- C#应用程序在桌面计算机上执行 - 原始文件位于server1上 - 文件需要复制到server2 - server3包含数据库
当我在桌面上运行此程序时,除了server1外,一切正常。大约5分钟后,即使在5分钟后拷贝过程仍在继续,server1似乎也几乎停滞不前。任何尝试连接到该服务器的其他应用程序/用户都无法连接。他们只会看到一个旋转的光标,只有在我停止在桌面上运行该程序时才会停止。对于拷贝过程的前5分钟,所有人都没问题。超过5分钟后,文件仍在继续复制,但其他人开始遇到与server1的连接问题。
我甚至尝试使用 `sleep` ,因为我假设减慢速度是由于server1上的网络活动和/或磁盘I / O活动过多造成的。然而, `sleep` 对解决问题没有帮助,同样的问题继续出现。所以我猜测问题是由于其他原因引起的。
我正在使用类似于以下内容来复制文件的代码:
为什么会发生这种情况?
进一步简化:
- C#应用程序在桌面计算机上执行 - 原始文件位于server1上 - 文件需要复制到server2 - server3包含数据库
当我在桌面上运行此程序时,除了server1外,一切正常。大约5分钟后,即使在5分钟后拷贝过程仍在继续,server1似乎也几乎停滞不前。任何尝试连接到该服务器的其他应用程序/用户都无法连接。他们只会看到一个旋转的光标,只有在我停止在桌面上运行该程序时才会停止。对于拷贝过程的前5分钟,所有人都没问题。超过5分钟后,文件仍在继续复制,但其他人开始遇到与server1的连接问题。
我甚至尝试使用 `sleep` ,因为我假设减慢速度是由于server1上的网络活动和/或磁盘I / O活动过多造成的。然而, `sleep` 对解决问题没有帮助,同样的问题继续出现。所以我猜测问题是由于其他原因引起的。
我正在使用类似于以下内容来复制文件的代码:
while (reader1.read(){
// system.threading.thread.sleep(2000);
system.io.file.copy(source, destination);
}
为什么会发生这种情况?
system.io.file.copy(source, destination)
,它基于数据库查询结果运行循环。 - oshirowanenforeach
或for
循环中,而不是并行循环? - Dan Puzeywhile(reader1.read())
作为循环。 - oshirowanen