Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание прогресс бара, работа с потоками, Как создать предупреждение пльзователю 
:(
    Опции темы
Nadezda
  Дата 1.8.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 31.5.2004

Репутация: нет
Всего: нет



Для загрузки диалога необходимо собрать (прочитать) некоторые данные. Иногда процесс сбора данных может затянуться. Поэтому надо перед загрузкой диалога показывать окошко с прогрес-баром, либо просто сообщением пользователю, чтобы он подождал.
Однако ничего не выходит. Почему-то диалог с прогресс баром показывается только в виде серого прямоугольника без какого либо изображения. Изображение на этом диалоге появляется в лучшем случае в конце процесса загрузки данных, когда практически уже и не нужно.

По идее всё должно работать так: 
Код

ImportWatingForm waitForm = new ImportWatingForm();
waitForm.Show();
                   
ImportModelUtils.ImportModel(path, ind, ref members, ref plates, sectManager);
waitForm.Hide();

ImportPreviewForm prevForm = new ImportPreviewForm(path, members, plates, sectManager);
prevForm.Show();


В общем, мне надо чтобы сначала появилась форма waitForm (нормально показалась со всеми контролами), потом прочитать данные из файла- функция
ImportModelUtils.ImportModel, а потом убрать waitForm и показать prevForm.

Пытаюсь использовать потоки - ничего толком не получается.

Код

class ImportProcess 
    {
        List<ImportedMemberData> members = new List<ImportedMemberData>();
        List<ImportPlateData> plates = new List<ImportPlateData>();
        SectionManager sectManager = new SectionManager();
        string mPath;
        int mInd;
        bool bImported = false;

        public ImportProcess(string strPath, int ind)
        {
            mPath = strPath;
            mInd = ind;
        }

        public void Import()
        {
            
            
            Thread myThread = new Thread(func);
            myThread.Start();
            //members = waitForm.Members;
            //plates = waitForm.Plates;
            ImportWatingForm waitForm = new ImportWatingForm(mPath, mInd, sectManager);
            waitForm.Show();
            while (myThread.ThreadState == ThreadState.Running)
                bImported = false;
            Thread.Sleep(10);
            bImported = true;
            if(bImported)
                waitForm.Close();
            ImportPreviewForm prevForm = new ImportPreviewForm(mPath, members, plates, sectManager);
            prevForm.Show();
        }

        void func() 
        {
            ImportModelUtils.ImportModel(mPath, mInd, ref members, ref plates, sectManager);
            bImported = true;
            Thread.Sleep(0);
        }
    }


Просто я плохо понимаю механизм работы с потоками.
PM MAIL   Вверх
dzaraev
Дата 1.8.2013, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 12.1.2013

Репутация: нет
Всего: 1



Внимательно изучите этот класс, скорее всего он полностью подойдёт под вашу задачу: BackgroundWorker . С его же помощью можно также легко сделать програсс-бар или не делать, если не надо. Читайте до конца, внизу есть информация как его использовать и примеры.
На всякий случай прикладываю простейший пример его использования.


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  WindowsFormsApplication3.zip 17,42 Kb
--------------------
Если вопрос решён - помечайте тему.  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0545 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.