예제 #1
0
        /// <summary>
        /// async-lambda
        /// </summary>
        private static void ShowTaskHighDelayAsync4()
        {
            string url = "http://www.IntelliTect.com";

            Console.Write(url);


            Func <string, Task> WriteWebRequestSizeAsync1 = async(WebUrl) =>
            {
                WebRequest  webRequest  = WebRequest.Create(WebUrl);
                WebResponse webResponse = await webRequest.GetResponseAsync();

                using (StreamReader reader = new StreamReader(webResponse.GetResponseStream()))
                {
                    string text = await reader.ReadToEndAsync();

                    Console.WriteLine(FormatBytes.FormatBytesMethod(text.Length));
                }
            };

            Task task = WriteWebRequestSizeAsync1(url);

            while (!task.Wait(100))
            {
                Console.Write(".");
            }
        }
예제 #2
0
        private static async Task WriteWebRequestSizeAsync(string url)
        {
            WebRequest  webRequest  = WebRequest.Create(url);
            WebResponse webResponse = await webRequest.GetResponseAsync(); //(self) block -> (callstack thread) go on

            using (StreamReader reader = new StreamReader(webResponse.GetResponseStream()))
            {
                string text = await reader.ReadToEndAsync();  //(self) block -> (callstack thread) go on

                Console.Write(FormatBytes.FormatBytesMethod(text.Length));
            }
        }
예제 #3
0
        private static void ShowTaskHighDelaySync()
        {
            //string url = "http://www.pandatv.com";
            string url = "http://www.IntelliTect.com";

            Console.Write(url);
            WebRequest webRequest = WebRequest.Create(url);

            WebResponse webResponse = webRequest.GetResponse();

            Console.Write("......");

            using (StreamReader reader = new StreamReader(webResponse.GetResponseStream()))
            {
                string text = reader.ReadToEnd();
                Console.WriteLine(FormatBytes.FormatBytesMethod(text.Length));
            }
        }
예제 #4
0
        /// <summary>
        /// asyncMethod
        /// </summary>
        private static void ShowTaskHighDelayAsync1()
        {
            string url = "http://www.IntelliTect.com";

            Console.Write(url);

            StreamReader reader     = null;
            WebRequest   webRequest = WebRequest.Create(url);
            Task         task       = webRequest.GetResponseAsync()
                                      .ContinueWith(FormerTask =>
            {
                WebResponse webResponse = FormerTask.Result;
                reader = new StreamReader(webResponse.GetResponseStream());
                return(reader.ReadToEndAsync());
            }).Unwrap()
                                      .ContinueWith(FormerTask =>
            {
                if (reader != null)
                {
                    reader.Dispose();
                }
                string text = FormerTask.Result;
                Console.Write(FormatBytes.FormatBytesMethod(text.Length));
            });

            try
            {
                while (!task.Wait(100))
                {
                    Console.Write(".");
                }
            }
            catch (AggregateException exception)
            {
            }
        }
예제 #5
0
        /// <summary>
        /// Task.run()  Factory.StartNew()->TaskCreationOptions.LongRunning
        /// </summary>
        private static void ShowTaskHighDelayAsync2()
        {
            string url = "http://www.IntelliTect.com";

            Console.Write(url);

            StreamReader reader     = null;
            WebRequest   webRequest = WebRequest.Create(url);

            //Task task = Task.Run(() =>
            //{
            //    WebResponse webResponse = webRequest.GetResponse();
            //    return webResponse;
            //}).ContinueWith(FormerTask =>
            //{
            //    reader = new StreamReader(FormerTask.Result.GetResponseStream());
            //    string text = reader.ReadToEnd();
            //    return text;
            //}).ContinueWith(FormerTask =>
            //{
            //    Console.Write(FormatBytes.FormatBytesMethod(FormerTask.Result.Length));
            //});


            //Task task = Task.Run(() =>
            //{
            //    WebResponse webResponse = webRequest.GetResponse();

            //    reader = new StreamReader(webResponse.GetResponseStream());
            //    string text = reader.ReadToEnd();

            //    Console.Write(FormatBytes.FormatBytesMethod(text.Length));
            //});

            /////////////////////// LongRunning ///////////////////////
            Task task = Task.Factory.StartNew(() =>
            {
                WebResponse webResponse = webRequest.GetResponse();

                reader      = new StreamReader(webResponse.GetResponseStream());
                string text = reader.ReadToEnd();

                Console.Write(FormatBytes.FormatBytesMethod(text.Length));
            }, TaskCreationOptions.LongRunning);



            try
            {
                /// Task Complete Event
                //task.GetAwaiter().OnCompleted(() =>
                //    {
                //        Console.WriteLine("Complete!");
                //    });


                while (!task.Wait(100))
                {
                    Console.Write(".");
                }
            }
            catch (AggregateException exception)
            {
            }
        }