自己写的进度条

namespace Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        string AllFile = string.Empty;
        ServiceReference1.UploadFileSoapClient soap = new ServiceReference1.UploadFileSoapClient();

        private void button1_Click(object sender, EventArgs e)
        {
            AllFile = "";
            string FtpFile = soap.GetAllFileName();//获取服务器返回的JSON,获取所有的文件名称,及文件修改时间
            int AllFileLength = 0;
            var json = Newtonsoft.Json.Linq.JArray.Parse(FtpFile);//处理JSON

            var listFileName = json.Select(j => j["FileName"]).ToList();//获取服务器文件名称列表
            var FileLength = json.Select(j => j["FileLength"]).ToList();//获取服务器文件字节
            var FileTime = json.Select(j => j["FileTime"]).ToList();//获取服务器文件修改时间

            for (int i = 0; i < FileLength.Count; i++)
            {
                if (!System.IO.File.Exists(Path.GetFullPath(".\\") + "UponLoad\\" + listFileName[i]))
                {
                    AllFile += listFileName[i] + ","; //记录不存在的文件名称
                    AllFileLength += Convert.ToInt32(FileLength[i]);//记录不存在的文件大小
                }
                else
                {
                    FileInfo fileInfo = new FileInfo(Path.GetFullPath(".\\") + "UponLoad\\" + listFileName[i]);
                    if (fileInfo.LastWriteTime.ToString("yyyyMMddHHmmss") != FileTime[i].ToString())
                    {
                        AllFile += listFileName[i] + ",";//记录不存在的文件名称
                        AllFileLength += Convert.ToInt32(FileLength[i]);//记录不存在的文件大小
                    }
                }
            }
            //若不存在记录数,则不进行更新
            if (AllFile.Length > 0)
            {
                AllFile = AllFile.Substring(0, AllFile.Length - 1);
                MessageBox.Show("需要更新的文件一共有" + AllFile.Split(‘,‘).Count() + "个,总共大小为:" + (AllFileLength / 1024) + "KB");
                progressBar1.Maximum = AllFile.Split(‘,‘).Count();
                Thread t = new Thread(new ThreadStart(GetBaseStringToFile));
                t.Start();
            }
            else
            {
                MessageBox.Show("不需要更新");
            }

        }

        private delegate void SetPoint(int pot);

        #region 更新进度条
        /// <summary>
        /// 更新进度条
        /// </summary>
        /// <param name="ipos"></param>
        private void SetTextMessage(int ipos)
        {
            if (this.InvokeRequired)
            {
                SetPoint setpos = new SetPoint(SetTextMessage);
                this.Invoke(setpos, new object[] { ipos });
            }
            else
            {
                this.label1.Text = ipos.ToString() + "/"+AllFile.Split(‘,‘).Count();
                this.progressBar1.Value = Convert.ToInt32(ipos);
            }
        }
        #endregion

        int j = 0;//记录更新成功的文件数目

        public void GetBaseStringToFile()
        {
            string[] fileToName=AllFile.Split(‘,‘);
            for (int i = 0; i < fileToName.Count(); i++)
            {
                if (Untity.StringToFile(soap.FileToStream(fileToName[i]), Path.GetFullPath(".\\") + "UponLoad\\" + fileToName[i])) //下载更新文件,返回true则增加进度条
                {
                    Thread.Sleep(500);
                    j++;
                    SetTextMessage(j);
                }
            }
        }
    }

}

还没搞出怎么提示子线程加载完成。搞出来了然后就可以提示更新成功或失败。。。

  #region 把经过base64编码的字符串保存为文件
        /// <summary>
        /// 把经过base64编码的字符串保存为文件
        /// </summary>
        /// <param name="base64String">经base64加码后的字符串 </param>
        /// <param name="fileName">保存文件的路径和文件名 </param>
        /// <returns>保存文件是否成功 </returns>
        public static bool StringToFile(string base64String, string fileName)
        {
            try
            {
                FileStream fs = new FileStream(fileName, FileMode.Create);
                BinaryWriter bw = new BinaryWriter(fs);
                if (!string.IsNullOrEmpty(base64String) && File.Exists(fileName))
                {
                    bw.Write(Convert.FromBase64String(base64String));
                }
                bw.Close();
                fs.Close();
            }
            catch
            {
                return false;
            }
            return true;
        }
        #endregion
时间: 2024-10-11 09:51:15

自己写的进度条的相关文章

python手写实现进度条

哈哈哈,我们平时都经常见到python的进度条,安装pip包的时候,更新的时候,调用第三方库的时候,,,但是很少有人试过自己实现,今天来了兴趣就自己写一套哈哈哈 进度条的输出是在原地刷新的,所以用到输出的‘\r’和time库的sleep(),‘\r’即“换行,光标在上一行”.这里提供两种方法: ————使用print() for i in range(0,101,2):    print('\r----->>',i, '<<-----',end = "", fl

div+css写的进度条

<style>#graphbox{border:1px solid #e7e7e7;padding:10px;width:250px;background-color:#f8f8f8;margin:5px 0;}#graphbox h2{color:#666666;font-family:Arial;font-size:18px;font-weight:700;}.graph{position:relative;background-color:#F0EFEF;border:1px solid

JQuery入门——进度条

越来越觉得常规javascript已经跟不上节奏了,打算学点进阶的,从JQuery学起. JQuery是一个Javascript库,可以从JQuery.com下载,放到本地,用 <script src="jquery.js"></script> 语句来引用.如果不想下载jquery,可以引用web上的jquery库,从google或微软的服务器上引用他们的jquery库. 引用google的jquery库: <script src="http:/

练习题(登陆-进度条-微信接口判断qq-微信接口判断列车时刻表-)

1.写一个用户的登陆注册的界面,用户的密码用hashlib加密存在文件中,登陆时候,用户的密码要和文件中的密码一致才行 def sha(password): #加密函数 passwd = hashlib.sha256(bytes('wxtrkbc', encoding='utf-8')) passwd.update(bytes(password,encoding='utf-8')) return passwd.hexdigest() def register(user,passwd): #注册函

关于进度条

其实按照杨老师说的做个表格,写一下进度条在这个时间上我还是赶得出来的 但是说实话我没有计算时间, 因为我觉得写进度条是对工作做一个记录和数据的统计,进而提高工作效率 但是就目前我的水平来说,很显然并没有什么明显的功效 我想等我学好基础后,再来提升工作效率, 等到一定程度了再补上把. 虽说自己对着电脑的时间很长了,浑身不舒服,颈椎病都犯了. 但是有效做功的时间也就是输出的时间真的很少. 很明显的感受到了.

对进度条progressbar的调整

进度条的理解,感觉这个进度条不是那么简单,系统给我们定制了几个普通的,但是如果还需要有更加好的效果,需要自己去调试. <ProgressBar android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal" android:progress=

基于Jquery的音乐播放器进度条插件

自己基于豆瓣FM的ui仿写qq音乐时,基于Jquery手写的进度条插件,效果图如下: 主要特色: ① 可自适应挂载元素的宽度,也可以自己设置进度条宽度: ② 支持部分默认参数修改(具体见使用说明): ③ 允许最大时间为23:59:59,高于此值将默认修改为此值: ④ 可以自己控制进度条动画的开关及重置: ⑤ 可以获取进度条当前时间和宽度,与H5的audio标签协调使用. 使用说明: /* * 功能描述:播放器进度条 * 参数: * option:挂载父元素 * inTime:进度条时间长度 *

CSS 静态进度条效果

今天学习到了实现一个静态进度条的方法,固写一篇笔记稳固一下自己的知识. 最终的效果如下,进度条放在一个框里,水平宽自适应. 现在就开始,首先写一个进度条先. .progress-bar{ /* 进度条的槽 */ width:47%; /* 设置进度条的高度 */ height: 5px; /*进度条外层div的背景色,进度未达到的地方的颜色 */ background-color: #f9e1e3; border-radius: 3px; } .progress{ /* 进度部分 */ /* 利

Jquery网页加载进度条(随笔,当然要随便写,当日记动态心情写咯)

首先先是吐槽时间... 告诉大家一个好消息,就是有个妹子非常仰慕我的前端技术说要包养我 然后有好多羡慕嫉妒恨的童鞋一定要说,少年你太天真了,那一定是HR 然后我表示她不是HR,本宅的春天貌似要到来了...T_T,25年的单身生涯.终于走到了尽头......然后妹子也是前端...为了保证光辉形象.我必要努力提升技术 然后么今天闲的蛋疼,再看看一帮大牛们的装逼网站,然后无意间看到这一段,只想说大牛们的世界真会玩.... 利用图片上data,还有load 最后在用document.readyState