Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554

Как правильно настроить async await

18.05.2015, 16:14. Показов 2862. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        private async void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.Filter = "Data files(*.data)|*.data";
            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                OpenFileName = OpenFile.FileName;
 
                if (await Resources.WorkFile.Open(OpenFile.FileName))
                {
                    MessageBox.Show("Файл открыт.");
                }
                else
                {
                    MessageBox.Show("Ошибки при открытии.");
                }
            }
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static bool Open(string FileLoad)
        {
            try
            {
                   FileStream FileStream = File.OpenRead(FileLoad);
                   BinaryReader BinaryReader = new BinaryReader(FileStream);
 
                
                   / Тут что то делаем /
 
                    FileStream.Close();
                    BinaryReader.Close();
 
                    return true;
            }
            catch
            {
                return false;
            }
        }
Подскажите как правильно настроить async await. Resources.WorkFile.Open(OpenFile.FileNam e) эта команда длительная потому что работает с бинарным файлом но проблема ругается что не может возвращать bool. Как переписать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2015, 16:14
Ответы с готовыми решениями:

Как реализовать десериализацию в этом коде с использованием Async Await?
Вот в этот код. private void button2_Click(object sender, EventArgs e) { { ...

Async/Await и Task
В чем разница между Async/Await и Task? и то и другое создает задачу, где и как лучше что использовать?

Winforms + async/await
Всем привет. Мне нужно было решить простую задачу по подключению к базе данных (но ведь это может быть и любой другой источник) и вывода...

6
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.05.2015, 16:37
C#
1
2
3
4
5
public static async Task<bool> Open(string FileLoad)
{
   / Тут что то делаем, используя await /
   var something = await BinaryReader.DoSomethingAsync();
}
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
18.05.2015, 17:11  [ТС]
Что то все равно не догоню как это применить
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.05.2015, 17:13
Цитата Сообщение от Bo0m21 Посмотреть сообщение
Что то все равно не догоню как это применить
Покажите, что происходит вот в этом месте:
Цитата Сообщение от Bo0m21 Посмотреть сообщение
C#
1
/ Тут что то делаем /
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
18.05.2015, 17:27  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.Filter = "Data files(*.data)|*.data";
            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                OpenFileName = OpenFile.FileName;
 
                if (Resources.WorkFile.Open(OpenFile.FileName))
                {
                   //
                }
            }
        }
C#
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
        public static bool Open(string FileLoad)
        {
            try
            {
                FileStream FileStream = File.OpenRead(FileLoad);
                BinaryReader BinaryReader = new BinaryReader(FileStream);
 
                VersionElement = BinaryReader.ReadInt16();
 
                if (Resources.Str.Version(Version))
                {
 
 
                    FileStream.Close();
                    BinaryReader.Close();
 
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch
            {
                return false;
            }
        }
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
18.05.2015, 17:41
Лучший ответ Сообщение было отмечено kolorotur как решение

Решение

Bo0m21, так как у вас слишком многа кода в методе Open, а в BinaryReader не добавили асинхронные методы, то проще всего будет сделать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        public async void открытьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog OpenFile = new OpenFileDialog();
            OpenFile.Filter = "Data files(*.data)|*.data";
            if (OpenFile.ShowDialog() == DialogResult.OK)
            {
                OpenFileName = OpenFile.FileName;
 
                bool isOpen = await Task.Run(() => Resources.WorkFile.Open(OpenFile.FileName));
                if (isOpen)
                {
                   //
                }
            }
        }
А сам метод Open оставьте как есть.
0
7 / 7 / 5
Регистрация: 14.07.2014
Сообщений: 554
18.05.2015, 17:53  [ТС]
Спасибо большое помогли!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2015, 17:53
Помогаю со студенческими работами здесь

Асинхронность (async-await)
Доброе утро! Помогите разобраться на простом примере. Ответ мне пригодится для моего проекта. Есть кнопка по событию нажатия на которую...

Использование Async & await
Добрый день! Есть форма, на которой расположены datagridview, в которые грузятся данные. На данный момент все работает, только при...

Использование async/await в библиотеке xNet
Всем привет. Подскажите кто знает, как использовать async/await в get запросе библиотеке xNet. Уже весь интернет перерыл, ничего не могу...

Просьба прокомментировать реализацию использования async/await
Доброго времени суток, хочу услышать Ваши комментарии, вдруг что упустил. Вкратце, есть форма, в ней прогрессбар и 2 кнопки:...

Перевести выполнение в потоки (с помощью async/await)
есть код: private void button1_Click(object sender, EventArgs e) { string sqlbase; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru