asp.net C# 如何实现在服务器上拷贝文件时,控制拷贝速度

C#写了一个控制台程序,想放到服务器上,对自定义的文件夹进行时时监控,如果发现有新的文件,则自动拷贝到另一个文件夹中。考虑到服务器的负载,想对文件拷贝的速度做一个限制,请... C#写了一个控制台程序,想放到服务器上,对自定义的文件夹进行时时监控,如果发现有新的文件,则自动拷贝到另一个文件夹中。考虑到服务器的负载,想对文件拷贝的速度做一个限制,请教该如何实现啊
通过了解 该问题转变为 :http://zhidao.baidu.com/question/274232755.html
如有解决方案 分数全部奉上 在线等
展开
 我来答
fightfs
2011-05-31 · 超过35用户采纳过TA的回答
知道答主
回答量:81
采纳率:100%
帮助的人:70.4万
展开全部
还是不太理解你的意思,如果拷贝到同一服务器的另一个文件夹,我觉得没必要限速,毕竟这个操作不是太占资源。如果是网络路径上的另一个文件夹,如果是内网上的机器,而服务器对外网的流量大,那也不影响,毕竟2者的速度差距很大。如果本来就是内部网站,而内部流量很大或者传到外网上的机器或者你一定想要限速。。好吧。。如同之前有人说的另起个线程:
Thread t1 = new Thread(new ThreadStart(CopyFile));
t1.start();
下面定义一个private void CopyFile()方法,然后把执行拷贝的代码写进去,然后可以检测I/O流如每传完500K后Thread.sleep(1000);
这是比较简单的办法,但是因为没有关闭过I/O流,所以只对降低网络资源占用有效
百度网友d242235
2011-05-31 · TA获得超过2385个赞
知道大有可为答主
回答量:1403
采纳率:84%
帮助的人:818万
展开全部
做一个定时器,每隔一段时间间隔就查看一次指定文件夹,并且保存这一次的文件目录。如果两次监视结果不一致,就把额外的文件拷贝到另一个文件夹。在这里不说代码,直说关键函数:
Directory.GeiFiles(string dir); //获取指定文件夹内的所有文件
File.Copy(string source,string target); //从source位置复制文件到target位置

另外,C#不好控制文件拷贝速度。究竟是什么样的所谓"服务器负载",需要去限制文件拷贝速度?理论是要结合实际的,服务器IO并发量真的超过了什么负载了么?与其实现什么限制速度,不如实现最大功能并发量得控制靠谱点。
追问
上面的程序已经做了定时器了  现在程序运行的原理就是跟你说的一样的  我也不知道为什么要做限制 因为那个程序是放在我们网站的服务器上的 网站需要的流量很大 师傅交代下来的任务,说要考虑到速度限制问题 所以我也不知道该怎么弄
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuxianlong_963
2011-05-24 · 超过10用户采纳过TA的回答
知道答主
回答量:55
采纳率:0%
帮助的人:43.8万
展开全部
可以在单位时间传递了一定数据流后就暂停线程 如每传完500K后 就让线程暂停1s
追问
能说详细点么 最好有控制的代码实现 因为我不怎么懂C#控制线程的API
追答
在读取被拷贝的文件的时候  通过seek这个方法读取文件的其中一部分大小自己定 然后进行copy传输逻辑 完了在添加 Thread.Sleep(1000) 停止1S钟   依次重复以上的操作
具体代码自己去研究,搞技术的不要太依赖别人现成的代码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
说着笑着d午后
2011-05-31 · TA获得超过282个赞
知道小有建树答主
回答量:426
采纳率:0%
帮助的人:266万
展开全部
这个貌似涉及到系统级别的消息监听了,hook 系统消息吧,我也没做过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式