【发布时间】:2014-09-24 11:30:50
【问题描述】:
我有一个 C# 程序,它查询数据库 (server3) 以确定用户正在查找的文件,然后将这些文件从 (server1) 复制到 (server2)。
进一步简化
- C# 应用程序在台式计算机上执行
- 原始文件在 server1 上
- 文件将被复制到 server2
- Server3 包含数据库
当我在我的桌面上运行这个程序时,除了 server1 之外,一切都运行良好,它似乎在大约 5 分钟后几乎磨成一团糟,即使复制过程在 5 分钟后仍能正常运行。任何其他尝试连接到该服务器的应用程序/用户都不能。
他们只是得到一个旋转的光标,只有当我停止在我的桌面上运行程序时才会停止。在复制过程的前 5 分钟,对每个人来说一切都很好。超过 5 分钟范围时,文件会继续复制,但此时其他人开始遇到与 server1 的连接问题。
我什至尝试过使用sleep,因为我认为速度变慢是因为服务器 1 上的网络活动过多和/或磁盘 I/O 活动过多。 sleep 无济于事,同样的问题仍在继续。所以我猜这个问题是由于其他原因而发生的。
我正在使用与此类似的代码来复制文件
while (reader1.read(){
// system.threading.thread.sleep(2000);
system.io.file.copy(source, destination);
}
为什么会这样?
【问题讨论】:
-
你是如何复制文件的?如果您只是在做一堆顺序文件副本,那么听起来您的服务器只是规格不足。如果您尝试并行运行多个副本,您可能应该将您的代码构造得不那么激进。
-
我正在根据数据库查询复制特定文件。不是并行复制,是一次复制一个文件。
-
这不能回答我的问题。你能显示一些代码吗?
-
我使用的是代码
system.io.file.copy(source, destination),它根据数据库查询结果循环运行。 -
在常规的
foreach或for循环中,而不是并行循环?