Создание прогресс бара.
Однако ничего не выходит. Почему-то диалог с прогресс баром показывается только в виде серого прямоугольника без какого либо изображения. Изображение на этом диалоге появляется в лучшем случае в конце процесса загрузки данных, когда практически уже и не нужно.
Что делать?
К сожалению я не очень понимаю, как работать с потоками и как применять их к диалогам. Может есть какой-нибуть пример?
Это точно!!!
чё так . Вроде C# and VB-net в потоках нормально.
И ещё не очень понятен механизм сбора данных.
waitForm.Show();
ImportModelUtils.ImportModel(path, ind, ref members, ref plates, sectManager);
waitForm.Hide();
ImportPreviewForm prevForm = new ImportPreviewForm(path, members, plates, sectManager);
prevForm.Show();
ImportModelUtils.ImportModel, а потом убрать waitForm и показать prevForm.
Читаю разные примеры и хелпы, пытаюсь химичить, но ничего не выходит. Либо waitForm нормально не показывается, либо показывется, но не выключается, либо вовсе не загружается.
С потоками столько всего разного, что никак не могу понять, как надо действовать в этой ситуации. Примеры чаще всего для консольных аппликаций.
И в общем не обязательно прогресс бар- достаточно окошка с надписью "Пожалуйста подождите, идёт процесс чтения файла".
Просто я хочу, чтобы пользователь видел, что процесс идёт.
ImportWatingForm должна появляться в центре экрана. В ней нет ни рамочек, ни кнопочек, поэтому она должна появиться и убраться сама.
List<ImportPlateData> plates = new List<ImportPlateData>();
Когда все данные загрузятся, должна выскочить форма ImportPreviewForm, которая их обрабатывает, то есть показывает результат считывания.
this.Current = Cursors.Default;
Да я не к тому, что C♯ плохо дружит с потоками, просто надо было язык узнать.
Итак, C♯, отлично. В нём я не эксперт, но алгоритм, я думаю, сработает везде:
• создаёшь новый поток, в методе потока начинаешь загрузку данных,
• в текущем потоке создаёшь окно,
• если метод загрузки данных собственный, а не сторонний, то наверняка можно узнать прогресс получения оных, который будет передаваться в 1-й поток и выводиться на форме прогресса.
{
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();
ImportPreviewForm prevForm = new ImportPreviewForm(mPath, members, plates, sectManager);
prevForm.Show();
}
void func()
{
ImportModelUtils.ImportModel(mPath, mInd, ref members, ref plates, sectManager);
bImported = true;
}
}
Ничего не получается. В этом случае прогресс бар просто не отображается. Его не видно. В лучшем случае показывается, когда уже поздно и не нужно.