c#5 what's new?
TRANSCRIPT
Обзор ключевых возможностей
The C# Programming Language
What’s new in C# 5.0 ?
Lesson 1
2
Семинар «What’s new in C# 5.0 ?»
Добрый день!
• Инструктор: Олег Кулыгинwww.linkedin.com/in/kulygin
3
C# 5.0 - What’s new?
Нововведения
С# 2 = Generics, LambdaС# 3 = var, LINQC# 4 = dynamic, TPLC# 5 = Async
4
C# 5.0 - What’s new?
Синхронность: проблемы
private void GetButtonClick(object sender, RoutedEventArgs e){
var req = (HttpWebRequest) WebRequest.Create("http://microsoft.com/");
………
var resp = (HttpWebResponse) req.GetResponse();
dataTextBox.Text += resp.Headers.ToString();}
5
C# 5.0 - What’s new?
Синхронность: проблемы
Вызывающий поток блокируется, до завершения длительной операции
6
C# 5.0 - What’s new?
Асинхронная модель до C# 5
var req = (HttpWebRequest)WebRequest.Create("http://www.google.com");req.Method = "GET";req.BeginGetResponse(
(asyncResult) =>{
var resp = (HttpWebResponse)req.EndGetResponse(asyncResult);
string headersText = resp.Headers.ToString();dataTextBox.Text += headersText;
},null);
7
C# 5.0 - What’s new?
Асинхронная модель: Обновление UI
Попытка обновления UI из другого потока
8
C# 5.0 - What’s new?
Асинхронная модель: Обновление UI
Обновление UI из другого потока через SynchronizationContext
var sync = SynchronizationContext.Current;
req.BeginGetResponse(asyncResult =>
{var resp = (HttpWebResponse) req.EndGetResponse(asyncResult);sync.Post(
delegate { // ОБНОВЛЕНИЕ UI }, null);
,null);};
9
C# 5.0 - What’s new?
Async & Await
async void getButton_Click(object sender, RoutedEventArgs e){
var w = new WebClient();string txt = await w.DownloadStringTaskAsync(“...");dataTextBox.Text = txt;
}
Ключевое слово async указывает компилятору, чтометод, является асинхронным.
await указывает компилятору, что в этой точке необходимо дождаться окончания асинхронной операции(при этом управление возвращается вызвавшему методу).
10
C# 5.0 - What’s new?
Async & Await: Асинхронная простота
11
C# 5.0 - What’s new?
Async & Await: Исключения
Удобная обработка исключений
Исключения «выбрасываются» в месте вызоваасинхронной операции, а не Callback-метода!
12
C# 5.0 - What’s new?
Асинхронность и Многопоточность
var wс1 = new WebClient();var wс2 = new WebClient();
Task<string> task1 = wc1.DownloadStringTaskAsync(url1); Task<string> task2 = wc2.DownloadStringTaskAsync(url2);
…string[] results = await Task.WhenAll(task1,task2);
Task.WhenAll() , Task.WhenAny() .
13
C# 5.0 - What’s new?
Caller Information
Появилась возможность, получить информацию о методе, который произвел вызов.
using System.Runtime.CompilerServices;
14
C# 5.0 - What’s new?
Caller Information
Возможность, получить информацию о методе, которыйпроизвел вызов.
using System.Runtime.CompilerServices;
15
C# 5.0 - What’s new?
Замыкания на переменных цикла
var actions = new List<Action>();
foreach (var i in Enumerable.Range(1, 3))actions.Add(() => Console.WriteLine(i));
foreach (var action in actions) action.Invoke();
C# 5.0 C# 4.0
16
C# 5.0 - What’s new?
Замыкания на переменных цикла
class Closure { public int i; }
Closure
Int32 i = 3
C# 5
17
C# 5.0 - What’s new?
Замыкания на переменных цикла
class Closure { public int i; }
Closure
Int32 i = 3
C# 5
Q&A
18
ПРОВЕРКА ЗНАНИЙ
TestProvider обеспечивает надежную и объективную оценку технических знаний и опыта работы IT-специалиста с программными продуктами Microsoft.
19
Перейти к тестированию www.TestProvider.com
Тестирование IT-специалистов
Подтвердите ваш практический опыт работы с технологиями Microsoft, получив сертификацию, соответствующую той работе, которую вы выполняете сейчас или желаете получить в будущем.
Сертификация IT-специалистов
Компании Microsoft, CyberBionic Systematics и Intel на базе портала TestProvider компании CyberBionic Systematics с использованиемплатформы Microsoft Azure совместно с Министерством науки и образования Украины проводят Всеукраинское дистанционноемониторинговое исследование уровня сформированности у выпускников учебных заведений навыков использованияинформационно-коммуникативных технологий в практической деятельности.
КУРС: С# Professional
Дорогие студенты школы CyberBionic Systematics,
Курс “C# для профессионалов” включает темы, которые излагаются в моей книге«CLR via C#» и учит, как работает CLR, показывая вам как строить приложения иповторно используемые компоненты для .NET Framework. Этот курс непредназначен для начинающих программистов; вам необходимо базовоепонимание Объектно-Ориентированного Программирования и опыт работы сязыком C# (а не только элементарное понимание синтаксиса).Я считаю, что вы найдете много информации о свойствах CLR и о том какиспользовать современные методы программирования в школе CyberBionicSystematics.
20
Описание курса:Курс дает возможность глубже освоить возможности языкаC# и изучить основные библиотеки платформы .NETFramework. Курс поможет освоить возможности языка,которые используются при профессиональномпроектировании и разработке программного обеспечения.Курс будет полезен программистам с опытомпрограммирования на C#.
Длительность:40 часов/20 дней.
Курс рекомендован
Джеффри Рихтером
Желаю вам всего самого наилучшего в вашей карьере,
Джеффри Рихтер, автор книги «CLR via C#»
Узнать более подробно о курсе на сайте: www.edu.cbsystematics.com
21