■ 비동기 프로그래밍 모델(Asynchronous Programming Model, APM) 사용하기

------------------------------------------------------------------------------------------------------------------------

Program.cs

 

 

using System;

using System.IO;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 파일 읽기 콜백시 처리하기 - ReadFileCallback(asyncResult)

 

        /// <summary>

        /// 파일 읽기 콜백시 처리하기

        /// </summary>

        /// <param name="asyncResult">비동기 결과</param>

        private static void ReadFileCallback(IAsyncResult asyncResult)

        {

            FileStream fileStream = (FileStream)asyncResult.AsyncState;

 

            int byteCount = fileStream.EndRead(asyncResult);

 

            Console.WriteLine("바이트 수 : {0}", byteCount);

        }

 

        #endregion

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        private static void Main()

        {

            string filePath = "d:\\source.txt";

 

            using(FileStream fileStream = File.OpenRead(filePath))

            {

                byte[] bufferByteArray = new byte[fileStream.Length];

 

                IAsyncResult asyncResult = fileStream.BeginRead

                (

                    bufferByteArray,

                    0,

                    (int)fileStream.Length,

                    ReadFileCallback,

                    fileStream

                );

 

                int i = 0;

 

                do

                {

                    Console.WriteLine("타이머 카운트 : {0}", ++i);

                }

                while(!asyncResult.IsCompleted);

            }

        }

 

        #endregion

    }

}

 

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요