自动更新 C#
来源:互联网 发布:优酷为什么显示没网络 编辑:程序博客网 时间:2024/05/12 13:26
应朋友要求,需要一个C# winform的自动更新要求 本来想想很简单 但实际操作也弄了一个下午(可能技术水平问题) 话不多说代码奉上。如有需要Email:zhulong1111@yahoo.cn 现给新手学习
主界面
thread+delegate实现信息提示
下载的文件(实际下载下来还要对文件解压,覆盖。。这些小功能就没去写了)
主页代码:
- C# code
- public partial class Form1 : Form { Thread th = null; public Form1() { InitializeComponent(); } public delegate void SetText(string text,int i); //声明委托 /// <summary> /// 委托实现 /// </summary> /// <param name="value">值</param> /// <param name="i">1表示为本地版本控件,2表示服务器版本控件,3表示提示信息控件</param> public void setTextVlue(string value,int i) { if (i == 1) lblOld.Text = value; else if (i == 2) lblNew.Text = value; else if (i == 3) lblMessage.Text = value; else if (i == 4) button1.Enabled = true; } /// <summary> /// 窗体加载 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form1_Load(object sender, EventArgs e) { th = new Thread(new ThreadStart(threadFun)); th.Start(); button1.Enabled = false; } public void threadFun() { lblMessage.Invoke(new SetText(setTextVlue), "获取本地版本号。。。",3); string enition = GetSourceList(System.AppDomain.CurrentDomain.BaseDirectory + "UpXml.xml", "Version")[0]; lblOld.Invoke(new SetText(setTextVlue),enition,1); Thread.Sleep(2000); lblMessage.Invoke(new SetText(setTextVlue),"获服务器地版本号。。。",3); Thread.Sleep(2000); string url = GetSourceList(System.AppDomain.CurrentDomain.BaseDirectory + "UpXml.xml", "url")[0]; enition = GetSourceList(url, "Version")[0]; lblNew.Invoke(new SetText(setTextVlue),enition,2); lblMessage.Invoke(new SetText(setTextVlue), "数据获取结束", 3); button1.Invoke(new SetText(setTextVlue), "打开按钮状态", 4); } /// <summary> /// 读取xml获取数据 /// </summary> /// <param name="xmlfilePath">xml路径</param> /// <param name="nodeName">点名称</param> /// <returns>xml值</returns> public static List<string> GetSourceList(string xmlfilePath, string nodeName) { XmlTextReader textReader = null; List<string> listStr = new List<string>(); try { textReader = new XmlTextReader(xmlfilePath); while (textReader.Read()) { if (textReader.NodeType == XmlNodeType.Element && textReader.IsStartElement()) { if (textReader.Name == nodeName) { listStr.Add(textReader.ReadInnerXml()); } } } } catch(Exception ee) { textReader.Close(); listStr.Add(ee.Message); } return listStr; }
下载页面代码
- C# code
- private void DownList_Load(object sender, EventArgs e) { dt = getSource(); dataGridView1.DataSource = dt; } /// <summary> /// 转化为DateTable 用于绑定 /// </summary> /// <returns></returns> public DataTable getSource() { string url = Form1.GetSourceList(System.AppDomain.CurrentDomain.BaseDirectory + "UpXml.xml", "url")[0]; List<string> list = Form1.GetSourceList(url, "UpdateFile"); DataTable tblDatas = new DataTable("Datas"); DataColumn dc = null; string url2 = Form1.GetSourceList(url, "ut")[0]; //赋值给dc,是便于对每一个datacolumn的操作 dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement = true;//自动增加 dc.AutoIncrementSeed = 1;//起始为1 dc.AutoIncrementStep = 1;//步长为1 dc.AllowDBNull = false;// dc = tblDatas.Columns.Add("name", Type.GetType("System.String")); dc = tblDatas.Columns.Add("lenght", Type.GetType("System.String")); dc = tblDatas.Columns.Add("url", Type.GetType("System.String")); DataRow newRow; for (int i = 0; i < list.Count; i++) { newRow = tblDatas.NewRow(); newRow["name"] = list[i]; newRow["lenght"] = list[i].ToString().Length; newRow["url"] =url2+"//"+ list[i].ToString(); tblDatas.Rows.Add(newRow); } return tblDatas; } //设置进度条 public void setProgressBar() { progressBar1.Value = 0; progressBar1.Minimum = 0; progressBar1.Maximum = dt.Rows.Count; progressBar1.Step = 1; for (int i = 0; i < dt.Rows.Count; i++) { progressBar1.Value += 1; WebClient client = new WebClient(); client.DownloadFile(dt.Rows[0]["url"].ToString(), dt.Rows[i]["name"].ToString()); Thread.Sleep(1000); } } private void button1_Click(object sender, EventArgs e) { setProgressBar(); }
- 自动更新 C#
- C#自动更新
- C#示例 自动更新程序
- C#程序自动更新
- C# 实现版本自动更新
- c# 自动更新设计
- winform c# 自动更新
- 【转载】C# 自动更新程序
- C# 软件自动更新升级
- C# winform 自动更新
- 用C#开发软件自动更新程序
- C#窗体程序自动更新-续
- C#实现软件自动更新思路
- C#实现软件自动更新思路
- C# 实现客户端程序自动更新
- C# winform自动更新程序扫盲
- VS2013发布C#自动更新程序
- 自动更新
- jquery拼图,draggable插件
- TCP/IP Socket 网络通信 基础
- 关于“document.write”的用法
- 结构体0长度数组的作用
- 第二章 - 函数模板
- 自动更新 C#
- SQL 中怎么查询一个数据库中一共有多少个表
- 将你的Asp.NET应用程序嵌入到SharePoint 读后感
- 实例说明:源码包生成RPM格式
- XMPP协议学习笔记三(Openfire服务器端搭建开发环境)
- Json反射成对象(随笔日记)
- 使用线程池时让所有线程都执行完再进行下一步
- 如何编写C# Windows服务
- 关于值传递(高手请无视)