winform通过webclient下载文件后打开

1:下载文件

        void runFile(SharedFile r)

        {

            var filepath = Path.Combine(Application.StartupPath, "Doc", r.FileName);

            if (File.Exists(filepath))

            {

                if (r.Viewed)

                {

                    System.Diagnostics.Process.Start(filepath);

                    return;

                }

                else

                {

                    File.Delete(filepath);

                }

            }

            dgSharedFile.Enabled = false;

            waitingFilePanel.Visible = true;

            this.Cursor = Cursors.WaitCursor;

            wc = new WebClient();

            wc.DownloadFileCompleted += new AsyncCompletedEventHandler(wc_DownloadFileCompleted);

            try

            {

                var url = string.Format("{0}files/Doc/{1}.{2}",

                    ServiceAgent.GetServiceUrl(),

                    r.Id,

                    r.FileName.Split('.').LastOrDefault());

                var uri = new Uri(url);

                wc.DownloadFileAsync(uri, filepath, r);

            }

            catch

            {

                Program.Alert("此文件正在被另一个进程所使用,请先关闭使用该文件的进程");

            }

        }

2.下载完成后打开

        void wc_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)

        {

            var r = e.UserState as SharedFile;

            var filepath = Path.Combine(Application.StartupPath, "Doc", r.FileName);

            dgSharedFile.Enabled = true;

            waitingFilePanel.Visible = false;

            this.Cursor = Cursors.Default;



            if (e.Cancelled)

            {

                if (File.Exists(filepath))

                {

                    File.Delete(filepath);

                }

            }

            else

            {

                try

                {

                    System.Diagnostics.Process.Start(filepath);

                    if (!r.Viewed)

                    {

                        ServiceAgent.ViewSharedFile(r.Id);

                        UpdateSharedFile();

                    }

                }

                catch

                {

                    Program.Alert("文件打开失败");

                }

            }

        }

你可能感兴趣的:(WinForm)