본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

[ WPF & C# (C Sharp)] - 다운로드 WebClient 방식 / Download

728x90
반응형

【 WPF & C# (C Sharp) 】 - 다운로드 WebClient 방식 / Download



WebClient_Download.zip




@ MainWindow.xaml



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Window x:Class="WebClient_Download.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WebClient_Download"
        mc:Ignorable="d"
        Title="MainWindow" Height="183.898" Width="255.826">
    <Grid>
        <Button x:Name="btnDownload" Content="Download" HorizontalAlignment="Left" Height="31" Margin="89,104,0,0" VerticalAlignment="Top" Width="64" Click="btnDownload_Click"/>
        <ProgressBar x:Name="ProgressBar1" Height="33" Margin="10,55,10,0" VerticalAlignment="Top"/>
        <Label x:Name="lbl1" Content="Label" Margin="10,55,10,0" VerticalAlignment="Top" Height="33" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
        <TextBlock Margin="10,10,43,0" TextWrapping="Wrap" Text="다운로드 WebClient" VerticalAlignment="Top" FontSize="20" Width="195"/>
    </Grid>
</Window>
 
cs




@ MainWindow.xaml.cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Net;
using System.Windows;
 
namespace WebClient_Download
{
    /// <summary>
    /// MainWindow.xaml에 대한 상호 작용 논리
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
 
        private void btnDownload_Click(object sender, RoutedEventArgs e)
        {
            string clientFile = "https://msdn.microsoft.com/ko-kr/library/ez801hhe(v=vs.110).aspx";
            string localFile = "abc.txt";
            DownloadFile(localFile, clientFile);   // localFile 존재 시 덮어쓰기 됨
        }
 
        private void DownloadFile(string localFile, string clientFile)
        {
            try
            {
                WebClient client = new WebClient();
                client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);   // 다운로드 완료 후
                client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);   // 다운로드 상태
                client.DownloadFileAsync(new Uri(clientFile), localFile);
            }
            // 에러발생 시
            catch(Exception error){MessageBox.Show(error.Message);}
        }
 
        private void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
 
            lbl1.Content = "Completed";
            Process.Start("abc.txt"); // 프로그램 실행
        }
 
        private void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            lbl1.Content = e.ProgressPercentage + "%";
            ProgressBar1.Value = e.ProgressPercentage;
        }
 
    }
}
 
cs




 @ 고생 많이 했다...

MS 자료에 WebClient 라고 해서 자료 찾아봤더니 아무리봐도 다운로드 상태나 완료 이후에 대한 자료가 없어서 많이 뒤적 거렸다.

다른 사람들이 올린 자료도 있고한데... 워낙 복잡하게 해놔서 나같은 초보는 접근 불가능한 세계의 언어였다. ㅠㅠ

결국 찾다찾다 다시 MS 에서 자료를 찾게 됐다.

역시... 모든 기초는 만든업체에서 꺼내와야하는것이 답인듯...

근데... 왜 WPF 는 항상 자료가 없지... ㅠㅠ


나름 핵심 부분만 정리해서 뽑아 놨다.

제발 써먹기 좋기를...



http://insurang.tistory.com






728x90
반응형