asp.net C# 如何实现在服务器上拷贝文件时,控制拷贝速度
C#写了一个控制台程序,想放到服务器上,对自定义的文件夹进行时时监控,如果发现有新的文件,则自动拷贝到另一个文件夹中。考虑到服务器的负载,想对文件拷贝的速度做一个限制,请...
C#写了一个控制台程序,想放到服务器上,对自定义的文件夹进行时时监控,如果发现有新的文件,则自动拷贝到另一个文件夹中。考虑到服务器的负载,想对文件拷贝的速度做一个限制,请教该如何实现啊
通过了解 该问题转变为 :http://zhidao.baidu.com/question/274232755.html
如有解决方案 分数全部奉上 在线等 展开
通过了解 该问题转变为 :http://zhidao.baidu.com/question/274232755.html
如有解决方案 分数全部奉上 在线等 展开
展开全部
还是不太理解你的意思,如果拷贝到同一服务器的另一个文件夹,我觉得没必要限速,毕竟这个操作不是太占资源。如果是网络路径上的另一个文件夹,如果是内网上的机器,而服务器对外网的流量大,那也不影响,毕竟2者的速度差距很大。如果本来就是内部网站,而内部流量很大或者传到外网上的机器或者你一定想要限速。。好吧。。如同之前有人说的另起个线程:
Thread t1 = new Thread(new ThreadStart(CopyFile));
t1.start();
下面定义一个private void CopyFile()方法,然后把执行拷贝的代码写进去,然后可以检测I/O流如每传完500K后Thread.sleep(1000);
这是比较简单的办法,但是因为没有关闭过I/O流,所以只对降低网络资源占用有效
Thread t1 = new Thread(new ThreadStart(CopyFile));
t1.start();
下面定义一个private void CopyFile()方法,然后把执行拷贝的代码写进去,然后可以检测I/O流如每传完500K后Thread.sleep(1000);
这是比较简单的办法,但是因为没有关闭过I/O流,所以只对降低网络资源占用有效
展开全部
做一个定时器,每隔一段时间间隔就查看一次指定文件夹,并且保存这一次的文件目录。如果两次监视结果不一致,就把额外的文件拷贝到另一个文件夹。在这里不说代码,直说关键函数:
Directory.GeiFiles(string dir); //获取指定文件夹内的所有文件
File.Copy(string source,string target); //从source位置复制文件到target位置
另外,C#不好控制文件拷贝速度。究竟是什么样的所谓"服务器负载",需要去限制文件拷贝速度?理论是要结合实际的,服务器IO并发量真的超过了什么负载了么?与其实现什么限制速度,不如实现最大功能并发量得控制靠谱点。
Directory.GeiFiles(string dir); //获取指定文件夹内的所有文件
File.Copy(string source,string target); //从source位置复制文件到target位置
另外,C#不好控制文件拷贝速度。究竟是什么样的所谓"服务器负载",需要去限制文件拷贝速度?理论是要结合实际的,服务器IO并发量真的超过了什么负载了么?与其实现什么限制速度,不如实现最大功能并发量得控制靠谱点。
追问
上面的程序已经做了定时器了 现在程序运行的原理就是跟你说的一样的 我也不知道为什么要做限制 因为那个程序是放在我们网站的服务器上的 网站需要的流量很大 师傅交代下来的任务,说要考虑到速度限制问题 所以我也不知道该怎么弄
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以在单位时间传递了一定数据流后就暂停线程 如每传完500K后 就让线程暂停1s
追问
能说详细点么 最好有控制的代码实现 因为我不怎么懂C#控制线程的API
追答
在读取被拷贝的文件的时候 通过seek这个方法读取文件的其中一部分大小自己定 然后进行copy传输逻辑 完了在添加 Thread.Sleep(1000) 停止1S钟 依次重复以上的操作
具体代码自己去研究,搞技术的不要太依赖别人现成的代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个貌似涉及到系统级别的消息监听了,hook 系统消息吧,我也没做过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询