Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 13
1

Асинхронные операции

20.08.2015, 00:39. Просмотров 1035. Ответов 2
Метки нет (Все метки)


Код
Console.WriteLine("Some code");
            using (var fs = new System.IO.FileStream("File.txt", System.IO.FileMode.Open))
            {
                var result = await fs.ReadAsync(new byte[0], 0, 0);
                Console.WriteLine("Some code");
            }
Console.WriteLine("Some code");
Асинхронная операция ввода-вывода.
Когда основной поток доходит до await все равно создается фоновый поток в котором происходит создание IRP пакета, передача пакета драйверу жесткого диска и тд и тп. Потом все что после await выполняется тем же потоком что и выполнял чтение.
Есть ли какая то разница между этим кодом и кодом ниже, или же это не более чем синтаксический сахар?
Код
            using (var fs = new System.IO.FileStream("File.txt", System.IO.FileMode.Open))
            {
                fs.ReadAsync(new byte[0], 0, 0).ContinueWith(i => 
                {
                    Console.WriteLine("Some code");
                });
            }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2015, 00:39
Ответы с готовыми решениями:

Асинхронные операции
Есть у меня источник с элементами (ObservableCollection), и специальные коллекции "отображения",...

Асинхронные операции на C#
Реализую обмен данными с устройством по USB-каналу (bulk передача) с использованием функций WinUSB...

Асинхронные сокеты
Здравствуйте. Очень нужна ваша помощь. Вот callback функция которая передается в метод асинхронного...

асинхронные делегаты
Добрый день. Вопрос мой об ассинронных делегатах. Я не могу никак понять EndInvoke() дожидается...

2
Каратель
Эксперт С++
6598 / 4019 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
20.08.2015, 18:14 2
Лучший ответ Сообщение было отмечено AsusKV как решение

Решение

Цитата Сообщение от AsusKV Посмотреть сообщение
Есть ли какая то разница между этим кодом и кодом ниже, или же это не более чем синтаксический сахар?

C#
1
2
3
4
5
6
7
using (var fs = new System.IO.FileStream("File.txt", System.IO.FileMode.Open))
{
    fs.ReadAsync(new byte[0], 0, 0).ContinueWith(i => 
    {
        Console.WriteLine("Some code");
     });
}
этот код эквивалентен этому:
C#
1
2
3
4
5
using (var fs = new System.IO.FileStream("File.txt", System.IO.FileMode.Open))
{
    var result = await fs.ReadAsync(new byte[0], 0, 0).ConfigureAwait(false);
    Console.WriteLine("Some code");
}
по умолчанию
C#
1
.ConfigureAwait(true);
0
анимешник++
95 / 62 / 7
Регистрация: 03.11.2009
Сообщений: 426
22.08.2015, 12:31 3
По сути первый вариант продолжит свое выполнение по окончанию await в основном потоке, в то время как ContinueWith в фоновом, т.е. если не планируете работать с UI, то оба варианты подходят, иначе - только 1й.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2015, 12:31

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Асинхронные методы в стиле Erlang
Уже не в первый раз встречаюсь с задачей и не знаю, как её реализовать согласно задумке. Задача...

Клиент + Сервер, асинхронные сокеты
Привет! Пишу клиент серверное приложение на основе асинхронных сокетов. Цель передача картинки....

SDK Яндекс Диск и асинхронные методы
Здравствуйте. Есть метод получения списка файлов в папке в SDK такой как GetListAsync. метод...

Асинхронные сокеты. Работа из нескольких окон
Есть клиент и есть сервер. Написаны по примерам которые можно найти здесь и здесь соответственно....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.