Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 27.05.2019, 16:48   #1
delik77
Новичок
 
Регистрация: 27.05.2019
Сообщений: 1
Репутация: 10
По умолчанию подвисает интерфейс при асинхронном построчном считывании файла

такая беда, я ещё очень плохо понимаю как делать независящие друг от друга действия в шарпе, вобщем есть такой код, открывающий текстовый файл по кнопке, подсчитывающий в нём кол-во строк и выводящий результаты подсчёта в label, но он выводит в label подсчитанное количество первых пары десятков/сотен строк и наглухо вешает интерфейс до конца подсчёта строк в файле. подскажите пожалуйста, как сделать правильно, чтобы интерфейс не подвисал ?

и ещё, по мере подсчёта строк в файле увеличивается кол-во занятой приложением памяти, как от этого избавится, что тут сделано неверно ?
Код:
private async void button14_Click(object sender, EventArgs e)
        {
            openFileDialog1.InitialDirectory = Application.StartupPath + @"\data";//Папка приложения + вложенная папка
            openFileDialog1.FileName = "domains.txt";
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string path = openFileDialog1.FileName;
                textBox10.Text = path;
                try
                {
                    using (StreamReader sr = new StreamReader(path))
                    {
                        string line;
                        int i = 0;
                        string showToLabel;
                        while ((line = await sr.ReadLineAsync()) != null)
                        {
                            i++;
                            showToLabel = i.ToString();
                            label22.Text = showToLabel;
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
delik77 вне форума   Ответить с цитированием
Старый 27.05.2019, 21:16   #2
WorldMaster
Профессионал
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Адрес: Россия, Мурманск
Сообщений: 2,319
Репутация: 705

icq: 359393755
По умолчанию

Ну можно вот так сделать:

Код:
 new Task(() =>
                    {
                        using (StreamReader sr = new StreamReader(path))
                        {
                            string line;
                            int i = 0;
                            string showToLabel;

                            while (!sr.EndOfStream)
                            {
                                line = sr.ReadLine();
                                this.Invoke(new MethodInvoker(() => label22.Text = (++i).ToString()));                                
                            }
                        }
                    }).Start();
__________________
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
Если помог - нажми на весы
WorldMaster вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь в считывании файла SVD102 C# (си шарп) 6 18.11.2015 10:20
Вывод мусора при считывании файла fewcher Помощь студентам 0 15.10.2013 18:51
Ошибка при считывании из файла JustSay Общие вопросы Delphi 3 29.07.2013 13:28
доступ по неверному указателю при построчном считывании данных из файла okrill Общие вопросы C/C++ 3 01.09.2012 19:07
Проблема при считывании из файла JeyKip Общие вопросы C/C++ 0 17.01.2010 23:03


22:22.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.