Notice
Recent Posts
Recent Comments
«   2024/05   »
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
Archives
Today
Total
관리 메뉴

Adagio non molto

Hello World! 본문

Study/C#

Hello World!

마르카토* 2018. 8. 21. 20:00

언어의 시작은 헬로월드!


C#, UWP의 시작도 역시 헬로월드다. 참고 사이트는 여기(마이크로소프트 공식 사이트)

위의 사이트를 따라가면, 헬로월드의 버튼과 함께 버튼을 누르면 TTS(음성 합성 시스템)가 헬로.월드. 하고 읽어준다.

한국인버젼의 TTS인듯한 부자연스러움이 있다.


1. 프로젝트 만들기

파일 - 새로만들기 - 프로젝트에서 비어 있는 앱(유니버설 Windows)을 선택한다.



선택하면 윈도우를 개발자 모드로 사용해라고 하는 문구가 나온다.

반드시 개발자 모드로 사용해야한다.

윈도우 검색에서 "개발자용 설정"을 검색하여 실행한 다음, 개발자 기능 사용에 개발자 모드를 선택해준다.


이후 나오는 플랫폼은 참조 사이트와 거의 같게 설정하였다.

Hello World이기 때문에 큰 상관은 없을 것이다.


선택을 마치면 아래와 같은 화면을 만날 수 있다.


처음에 신기했던 점은 C# 프로젝트인데 C# 코드 파일 확장자인 .cs가 없다는 것이다.

설명에 따르면 UWP 프로젝트는

사용자 인터페이스를 정의하는데 사용되는 언어 XAML (Extensible Application Markup Language) 파일로 구성되어 있고, 이는 디자인 도구로 만들 수 있다. 디자인 아래에 논리를 담당하는 .xaml.cs 파일이 숨겨져있고, xaml은 코드 숨김과 함께 완전한 클래스를 만든다.

디자인과 기능이 다른 파일로서 서로 연결되어있다고 생각되기도 한다.


일단 Hello World를 만들기 위해 사용할 파일은 MainPage.xaml 이다.


MainPage.xaml을 더블클릭해서 열면 (프로젝트 생성시 보이는 화면일 수 있다.)

이런 화면이 나타난다.


그림처럼 왼쪽의 Button을 드래그하여 캔버스 중앙에 두면 저렇게 나타낼 수 있다.

버튼을 눌러 아래의 코드 영역에서 Content를 "Hello, world!"로 바꿔주었다.

사이즈 등도 마음대로 바꿔주었다.


버튼을 더블클릭 하거나 우클릭-코드보기를 누르면 숨겨져있던 MainPage.xaml.cs를 볼 수 있다.

원래의 코드에서 아래처럼 코드를 바꿔주었다.


using System;

using Windows.UI.Xaml;

using Windows.UI.Xaml.Controls;


// 빈 페이지 항목 템플릿에 대한 설명은 https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x412에 나와 있습니다.


namespace HelloWorld

{

    /// <summary>

    /// 자체적으로 사용하거나 프레임 내에서 탐색할 수 있는 빈 페이지입니다.

    /// </summary>

    public sealed partial class MainPage : Page

    {

        public MainPage()

        {

            this.InitializeComponent();

        }


        private async void Button_Click(object sender, RoutedEventArgs e)

        {

            MediaElement mediaElement = new MediaElement();

            var synth = new Windows.Media.SpeechSynthesis.SpeechSynthesizer();

            Windows.Media.SpeechSynthesis.SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Hello, World!");

            mediaElement.SetSource(stream, stream.ContentType);

            mediaElement.Play();

            //GC.Collect();

        }

    }

}


private 다음에 async가 있음을 인지해야한다.


디버그 - 디버그 시작이나 F5를 하면 화면을 볼 수 있다.


버튼을 누르면 TTS가 소리를 내준다. Hello World!



+) //GC.Collect(); 가 있는데, 이는 누를 때마다 오른쪽의 프로세스 메모리가 계속해서 올라가길래 방법을 찾다가 넣어본것이다.

C#은 다른 언어의 free()와 같은게 없어서 이를 어쩌나 했는데, 가비지 컬렉터(GC)가 사용안하는 메모리를 자동으로 풀어준다고 한다.

오래 두어도 자동으로 안해주길래 GC.Collect()를 해보았더니 메모리가 많이 늘어나진 않았다.

대신 이렇게 했더니 C# 개발하는 친구한테 혼났다(...)

다른 방법을 찾아봐야한다.

'Study > C#' 카테고리의 다른 글

시작하기 전에 - 플랫폼 선택 등  (0) 2018.08.13
Comments