在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。
添加引用
using System.Data;
创建表
在项目中常常常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。
添加引用
using System.Data;
创建表
public class WebHttp { /// <summary> /// get请求带重试 /// </summary> /// <param name="Url"></param> /// <param name="postDataStr"></param> /// <param name="sum"></param> /// <returns></returns> public static string HttpGet(string Url, string postDataStr, int sum) { string temp=null; for (int i = 0; i < sum; i++) { if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim())) { temp = HttpGet(Url, postDataStr); } else { break; } } return temp; } /// <summary> /// post请求带重试 /// </summary> /// <param name="Url"></param> /// <param name="postDataStr"></param> /// <param name="sum"></param> /// <returns></returns> public static string HttpPost(string Url, string postDataStr, int sum) { string temp = null; for (int i = 0; i < sum; i++) { if (string.IsNullOrEmpty(temp) || string.IsNullOrEmpty(temp.Trim())) { temp = HttpPost(Url, postDataStr); } else { break; } } return temp; } /// <summary> /// GET请求与获取结果 /// </summary> public static string HttpGet(string Url, string postDataStr) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; request.Timeout = 10000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return retString; } catch (Exception ex) { return null; } } /// <summary> /// POST请求与获取结果 /// </summary> public static string HttpPost(string Url, string postDataStr) { try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.Timeout = 6000000; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postDataStr.Length; StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII); writer.Write(postDataStr); writer.Flush(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string encoding = response.ContentEncoding; if (encoding == null || encoding.Length < 1) { encoding = "UTF-8"; //默认编码 } StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding)); string retString = reader.ReadToEnd(); return retString; } catch (Exception ex) { return null; } } }
using System; using System.ComponentModel; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class Form1 : Form { private BackgroundWorker bgWorker = new BackgroundWorker(); public Form1() { InitializeComponent(); InitializeBackgroundWorker(); } private void InitializeBackgroundWorker() { bgWorker.WorkerReportsProgress = true; bgWorker.WorkerSupportsCancellation = true; bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork); bgWorker.ProgressChanged += new ProgressChangedEventHandler(bgWorker_ProgessChanged); bgWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorker_WorkerCompleted); } public void bgWorker_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i <= 100; i++) { if (bgWorker.CancellationPending) { e.Cancel = true; return; } else { bgWorker.ReportProgress(i, "Working"); System.Threading.Thread.Sleep(10); } } } public void bgWorker_ProgessChanged(object sender, ProgressChangedEventArgs e) { string state =(string)e.UserState;//接收ReportProgress方法传递过来的userState this.label2.Text = "状态:" +state; this.progressBar1.Value = e.ProgressPercentage; this.label1.Text = "处理进度:" + Convert.ToString(e.ProgressPercentage) + "%"; } public void bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show(e.Error.ToString()); return; } if (!e.Cancelled) this.label1.Text = "处理完毕!"; else this.label1.Text = "处理终止!"; } private void btnStart_Click_1(object sender, EventArgs e) { if (bgWorker.IsBusy) return; this.progressBar1.Maximum = 100; this.btnStart.Enabled = false; this.btnStop.Enabled = true; bgWorker.RunWorkerAsync("hello"); } private void btnStop_Click_1(object sender, EventArgs e) { this.btnStart.Enabled = true; this.btnStop.Enabled = false; bgWorker.CancelAsync(); } } }
//封装为一个方法判断变量是否为空 isobjEmpty(obj) { if (obj === null || obj === undefined || obj === "" || obj.length === 0 || obj === {}) { return true; } else { return false; } }, //使用 if(!this.isobjEmpty(obj)){ //存在 }else{ //不存在 }
if (jo.Property("abc") != null) { }
我们做了程序,不免会有版本升级,这就需要程序有自动版本升级的功能。
那么看看我是如何实现程序自动更新的。
直接上代码:
using System; using System.Collections.Generic; using System.Text; using System.Reflection; using System.IO; using System.Net; using System.Xml; namespace Update { /// <summary> /// 更新完成触发的事件 /// </summary> public delegate void UpdateState(); /// <summary> /// 程序更新 /// </summary> public class SoftUpdate { private string download; private const string updateUrl = "http://www.csdn.net/update.xml";//升级配置的XML文件地址 #region 构造函数 public SoftUpdate() { } /// <summary> /// 程序更新 /// </summary> /// <param name="file">要更新的文件</param> public SoftUpdate(string file,string softName) { this.LoadFile = file; this.SoftName = softName; } #endregion #region 属性 private string loadFile; private string newVerson; private string softName; private bool isUpdate; /// <summary> /// 或取是否需要更新 /// </summary> public bool IsUpdate { get { checkUpdate(); return isUpdate; } } /// <summary> /// 要检查更新的文件 /// </summary> public string LoadFile { get { return loadFile; } set { loadFile = value; } } /// <summary> /// 程序集新版本 /// </summary> % 3B public string NewVerson { get { return newVerson; } } /// <summary> /// 升级的名称 /// </summary> public string SoftName { get { return softName; } set { softName = value; } } #endregion /// <summary> /// 更新完成时触发的事件 /// </summary> public event UpdateState UpdateFinish; private void isFinish() { if(UpdateFinish != null) UpdateFinish(); } /// <summary> /// 下载更新 /// </summary> public void Update() { try { if (!isUpdate) return; WebClient wc = new WebClient(); string filename = ""; string exten = download.Substring(download.LastIndexOf(".")); if (loadFile.IndexOf(@"\") == -1) filename = "Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten; else filename = Path.GetDirectoryName(loadFile) + "\\Update_" + Path.GetFileNameWithoutExtension(loadFile) + exten; wc.DownloadFile(download, filename); wc.Dispose(); isFinish(); } catch { throw new Exception("更新出现错误,网络连接失败!"); } } /// <summary> /// 检查是否需要更新