中易网

C#中等待0.5秒,下面的命令代码

答案:3  悬赏:40  
解决时间 2021-02-28 22:43
C#中等待0.5秒,下面的命令代码
最佳答案
using System.Threading;

Thread.Sleep(500);
全部回答
您好, 首先,使用cmd拷贝是不可能写进度条的,或者说,进度条无法反映真实拷贝时间。 然后就是失去响应的问题, 我的建议是您对process.start()方法进行一个简单的封装,然后使用一个backgroundworker或thread,在ui线程以外另建立一个线程,这样可以保证用户界面不会失去响应,如果使用worker,您可以在runworkercompleted()事件中进行拷贝完成的处理。 如果使用file.copy(),您同样需要对建立file对象的方法另开一个线程,否则仍然会出现失去响应的问题。 另外,试图从远程计算机拷贝文件可能会有一些身份验证(多半是ntml)方面的问题。 如果您需要代码,请补充问题。 ====================================== 您好, 很抱歉这么晚给您回复…… 下面这个代码是backgroundworker的一个简单使用,您参考一下先 using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.text; using system.windows.forms; using system.diagnostics; namespace windowsapplicationnetcopywithcmd { public partial class form1 : form { string fsrc = ""; string fdes = ""; public form1() { initializecomponent(); } private void form1_load(object sender, eventargs e) { this.label1.text = ""; this.label2.text = "status : ready"; } private void button1_click(object sender, eventargs e) { if (openfiledialog1.showdialog()==dialogresult.ok) { if (savefiledialog1.showdialog()==dialogresult.ok) { fsrc = openfiledialog1.filename; fdes = savefiledialog1.filename; } } backgroundworker1.dowork += new doworkeventhandler(backgroundworker1_dowork); backgroundworker1.runworkercompleted += new runworkercompletedeventhandler(backgroundworker1_runworkercompleted); backgroundworker1.runworkerasync(); } void backgroundworker1_runworkercompleted(object sender, runworkercompletedeventargs e) { this.label2.text = "status : completed"; } void backgroundworker1_dowork(object sender, doworkeventargs e) { process p = new process(); p.startinfo.filename = "cmd.exe"; p.startinfo.useshellexecute = false; p.startinfo.redirectstandardinput = true; p.startinfo.redirectstandardoutput = true; p.startinfo.createnowindow = true; p.start(); string cmdstring = string.format("copy \"{0}\" \"{1}\"", fsrc, fdes); p.standardinput.writeline(cmdstring); p.standardinput.writeline("exit"); string s = p.standardoutput.readtoend(); p.close(); messagebox.show(s); } } } 这种多线程的程序设计其实是比较难的,用worker是个偷懒的方法。 这样的好处是copy时ui不会失去响应,要付出的代价是copy时间可能加长。 其实,最高效的方法是iostream,把原文件分块,然后多线程同步download,最后进行拼接。但是这种多线程程序比较难以理解和维护,而且编写时也容易出错。 我非常乐意与您继续讨论这个问题~~ 这几天堵车严重……先睡觉啦~ ===================== 您好, backgroundworker是“组件”不是“控件”,因此它在任何地方都可以使用。 如果您希望提高性能,我觉得用socket应该比较好,但socket比较低级,编码会比较困难。
Thread.Sleep(500)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蒸糖三角'红糖馅里不是要掺点面粉么?红
带有全和萍字的成语 或者是带有金字和萍字的
我想去学校拿毕业证,时隔两三年了,我学的是
粒粒香地址在哪,我要去那里办事
主板接口失灵
瑞安滨江中学新生入学成绩
the roaring lion kills no game 什么意思?〖
女儿国的房事
我是个闲人,怎么才能在家找点事做
利茂瓜果蔬菜在什么地方啊,我要过去处理事情
香水时代买香水靠谱吗
唱吧和配音秀都出不了声音怎么办啊,就是我录
粉皮是用凉水泡还是用热水烫
金怡陶瓷有限公司我想知道这个在什么地方
没破解的ps3怎么玩圣恩传说f汉化版
推荐资讯
小米红米2A和华为荣耀3C相比,哪款好
想知道: 兰州市 兰州新区是不是把以前的五镇
哪里有能在线看的中国时装表演
求辨别NIKE/耐克 rosherun 真假
陕西润丰园林景观工程有限公司地址有知道的么
如何将Excel中数据导入matlab变量中
TFBOYS的QQ 分别是多少
维港糖水铺怎么去啊,有知道地址的么
30岁以上,想去日本读书,请问有什么样的途径
云杉树四季常青吗
农业银行卡能通过手机向另一张农业银行卡转账
2012年安徽省考行测分值计算
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?