国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Web Services制作智能升級(jí)程序

升級(jí)程序的制作有多種方法,下面介紹一種用Web Services制作的升級(jí)程序。通過(guò)Web Services 升級(jí)程序就象讀寫(xiě)本機(jī)文件一樣簡(jiǎn)單。所以我就直接給出代碼。

 

Web Services部分代碼:

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.IO;

 

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

    public Service()

    {

        //如果使用設(shè)計(jì)的組件,請(qǐng)取消注釋以下行

        //InitializeComponent();

    }

    /// <summary>

    /// 需要升級(jí)文件的服務(wù)器路徑

    /// </summary>

    private const string UpdateServerPath ="d:\\Debug";

    [WebMethod(Description = "返回服務(wù)器上程序的版本號(hào)")]

    public string ServerVer()

    {

        return "4.0";

    }

    [WebMethod(Description = "返回需更新的文件")]

    public string[] NewFiles()

    {

        DirectoryInfo di = new DirectoryInfo(UpdateServerPath);

        FileInfo[] fi = di.GetFiles();

        int intFiles= fi.Length;

        string[] myNewFiles = new string[intFiles];

        int i = 0;

        foreach (FileInfo fiTemp in fi)

        {

            myNewFiles[i] = fiTemp.Name;

            System.Diagnostics.Debug.WriteLine(fiTemp.Name);

            i++;

        }

 

        return myNewFiles;

    }

    [WebMethod(Description = "返回需更新的文件的大小")]

    public int AllFileSize()

    {

        int filesize = 0;

        string[] files = Directory.GetFiles(UpdateServerPath);

        foreach (string file in files)

        {

            FileInfo myInfo = new FileInfo(file);

            filesize += (int)myInfo.Length / 1024;

        }

        return filesize;

    }

 

    [WebMethod(Description = "返回給定文件的字節(jié)數(shù)組")]

    public byte[] GetNewFile(string requestFileName)

    {

        ///得到服務(wù)器端的一個(gè)文件

        if (requestFileName != null || requestFileName != "")

            return getBinaryFile(UpdateServerPath + "\\"+requestFileName);

        else

            return null;

    }

 

    /// <summary>

    /// 返回所給文件路徑的字節(jié)數(shù)組。

    /// </summary>

    /// <param name="filename"></param>

    /// <returns></returns>

    private byte[] getBinaryFile(string filename)

    {

        if (File.Exists(filename))

        {

            try

            {

                //打開(kāi)現(xiàn)有文件以進(jìn)行讀取。

                FileStream s = File.OpenRead(filename);

                return ConvertStreamToByteBuffer(s);

            }

            catch

            {

                return new byte[0];

            }

        }

        else

        {

            return new byte[0];

        }

    }

    /// <summary>

    /// 把給定的文件流轉(zhuǎn)換為二進(jìn)制字節(jié)數(shù)組。

    /// </summary>

    /// <param name="theStream"></param>

    /// <returns></returns>

    private byte[] ConvertStreamToByteBuffer(System.IO.Stream theStream)

    {

        int b1;

        System.IO.MemoryStream tempStream = new System.IO.MemoryStream();

        while ((b1 = theStream.ReadByte()) != -1)

        {

            tempStream.WriteByte(((byte)b1));

        }

        return tempStream.ToArray();

    }

 

}

 

升級(jí)程序代碼:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Threading;

using System.Xml;

using System.IO;

using System.Diagnostics;

 

namespace AutoUpdate

{

    public partial class frmAutoUpdate : Form

    {

        public frmAutoUpdate()

        {

            InitializeComponent();

        }

        /// <summary>

        /// 當(dāng)前版本

        /// </summary>

        private string m_strLocalVer;

        /// <summary>

        /// 服務(wù)器版本

        /// </summary>

        private string m_strServerVer;

        /// <summary>

        /// 需要更新的文件總數(shù)

        /// </summary>

        private int m_intFilesCount = 0;

        /// <summary>

        /// 需要更新的文件大小

        /// </summary>

        private int m_AllFileSize;

        /// <summary>

        /// 正在下載的文件大小

        /// </summary>

        private int m_downingFileSize;

        /// <summary>

        /// 已經(jīng)下載的文件大小

        /// </summary>

        private int m_downedFileSize;

        /// <summary>

        ///數(shù)組,需要更新的文件

        /// </summary>

        private string[] m_Files = null;

        /// <summary>

        /// 定義文件對(duì)象

        /// </summary>

        WebReference.Service ws;

        /// <summary>

        /// 連接WebServeces并下載文件線程

        /// </summary>

        private Thread DownThread;

        private void frmAutoUpdata_Load(object sender, EventArgs e)

        {

            DownThread = new Thread(new ThreadStart(StartUpdate));

            DownThread.Start();

        }

        /// <summary>

        /// 連接服務(wù)器,開(kāi)始升級(jí)

        /// </summary>

        private void StartUpdate()

        {

            ws = new WebReference.Service();

            m_AllFileSize = ws.AllFileSize();

            try

            {

                m_strLocalVer =Config.Ver; //從配置文件中讀取當(dāng)前版本號(hào)

                m_strServerVer = ws.ServerVer();//保存服務(wù)器版本號(hào)

 

                BeginInvoke(new System.EventHandler(UpdateUI), lblLink);

                //當(dāng)前版本低于服務(wù)器版本,開(kāi)始更新...

                if (double.Parse(m_strLocalVer) < double.Parse(m_strServerVer))

                {

                    BeginInvoke(new System.EventHandler(UpdateUI), lblDownLoad);

                    m_Files = ws.NewFiles();//需要更新的文件

                    if (m_Files != null)

                    {

                        m_intFilesCount = m_Files.Length;

                        for (int i = 0; i <= m_intFilesCount - 1; i++)

                        {

                            DownFile(m_Files[i]);

                            Debug.WriteLine(m_Files[i]);

                        }

                        // Config.VER = strServerVer;//將版本號(hào)記錄到配置文件中

                    }

                }

                else

                {

                    BeginInvoke(new EventHandler(OnShowMessage),

                        "你計(jì)算機(jī)上安裝的已經(jīng)是最新版本了,不需要升級(jí).");

                    return;

                }

            }

            catch (Exception ex)

            {

                BeginInvoke(new EventHandler(OnShowMessage), ex.Message);

                return;

            }

            //UI線程設(shè)置label屬性

            BeginInvoke(new System.EventHandler(UpdateUI), lblStartExe);

            //安裝文件

            MethodInvoker miSetup = new MethodInvoker(this.StartSetup);

            this.BeginInvoke(miSetup);

        }

        /// <summary>

        /// 下載文件

        /// </summary>

        /// <param name="fileName">文件名</param>

        private void DownFile(string fileName)

        {

            //得到二進(jìn)制文件字節(jié)數(shù)組;

            byte[] bt = ws.GetNewFile(fileName);

            m_downingFileSize = bt.Length / 1024;

            string strPath = Application.StartupPath + "\\Update\\" + fileName;

            if (File.Exists(strPath))

            {

                File.Delete(strPath);

            }

            FileStream fs = new FileStream(strPath, FileMode.CreateNew);

            fs.Write(bt, 0, bt.Length);

            fs.Close();

        }

        /// <summary>

        /// 開(kāi)始安裝下載的文件

        /// </summary>

       private void StartSetup()

        {

            // 結(jié)束當(dāng)前運(yùn)行的主程序

            Process[] pros = Process.GetProcesses();

            for (int i = 0; i < pros.Length; i++)

            {

                if (pros[i].ProcessName == "教師考勤系統(tǒng)")

                {

                    pros[i].Kill();

                }

            }

            // 開(kāi)始復(fù)制文件

            for (int i = 0; i <= m_intFilesCount - 1; i++)

            {

                string sourceFileName = Application.StartupPath + "\\Update\\" + m_Files[i];

                string destFileName = Application.StartupPath + "\\" + m_Files[i];

                if (File.Exists(destFileName))

                {

                    File.Delete(destFileName);

                }

                File.Copy(sourceFileName, destFileName, false);

            }

            // 升級(jí)完成,啟動(dòng)主程序

            string StrExe = Application.StartupPath + "\\教師考勤系統(tǒng).exe";

 

            if (File.Exists(StrExe))

            {

                System.Diagnostics.Process.Start(StrExe);

            }

 

            //關(guān)閉升級(jí)程序

            Application.Exit();

        }

 

        #region 輔助方法,確保線程安全

 

        /// <summary>

        /// Label上顯示信息

        /// </summary>

        private void UpdateUI(object sender, EventArgs e)

        {

            Label lbl = (Label)sender;

            lbl.ForeColor = SystemColors.Desktop;

            lblLocalVer.Text = m_strLocalVer;

            lblServerVer.Text = m_strServerVer;

        }

 

        /// <summary>

        /// 顯示對(duì)話框

        /// </summary>

        private void OnShowMessage(object sender, EventArgs e)

        {

            MessageBox.Show(this, sender.ToString(), this.Text,

                MessageBoxButtons.OK, MessageBoxIcon.Information);

            Thread.Sleep(100);

            this.Close();

        }

        /// <summary>

        /// 顯示進(jìn)度條

        /// </summary>

        private void InvokePrgBar()

        {

            if (prgBar.Value < 100)

            {

                prgBar.Value = 100 * (int)m_downedFileSize / m_AllFileSize;

                prgBar.Update();

                System.Diagnostics.Debug.WriteLine("prgBar.Value:{0}" + prgBar.Value);

            }

        }

        /// <summary>

        /// 計(jì)算文件已下載的百分比

        /// </summary>

        private void subPrgBar()

        {

            m_downedFileSize += m_downingFileSize;

            System.Diagnostics.Debug.WriteLine("AllFileSize  " + m_AllFileSize);

            System.Diagnostics.Debug.WriteLine("downingFileSize  " + m_downingFileSize);

            do

            {

                Thread.Sleep(100);

                MethodInvoker mi = new MethodInvoker(this.InvokePrgBar);

                this.BeginInvoke(mi);

            } while (m_AllFileSize <= m_downedFileSize);

        }

        #endregion

 

        /// <summary>

        /// 關(guān)閉窗體時(shí)關(guān)閉線程

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void frmAutoUpdate_FormClosing(object sender, FormClosingEventArgs e)

        {

            try

            {

                DownThread.Abort();

            }

            catch

            {

                ;

            }

        }

    }

}

 

效果圖:

 

如有問(wèn)題,請(qǐng)留言告之。謝謝~
作者:chendazhi
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
文件上傳
使用npoi做excel導(dǎo)出真心方便
自己最近寫(xiě)的一組日志處理類(支持高并發(fā)處理)
C#獲取文件名稱、路徑、后綴名
winform下用FileStream實(shí)現(xiàn)多文件上傳
WCF大文件傳輸
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服