|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
Уважаемый форум, Скорее всего боян, но ничего вразумительного не нашел. Есть форма 1, которая грузится на старте. По событию Show происходит загрузка данных из внешнего источника. В это время сама форма не отрисовывается полностью - контролы не инициализированы и т.д. Пробовал и двойную буфферизацию и вешать загрузку данных на другие события и отдельную форму 2 как стартовую с перебросом фокуса на рабочую форму 1 - результат один и тот же: форма 1 не отрисовывается полностью, пока не закончится загрузка данных. Если закомментировать загрузку данных - форма грузится очень быстро. Как заставить форму отрисоваться полностью, а уже потом грузить данные? Есть варианты? Спасибо заранее! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 14:41 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
IFK, Это шутка? Про потоки не слышал? Или таймер на загрузку. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 15:15 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
1) использовать асинхронный ввод\вывод при загрузке. 2) грузите данные в отдельном потоке Вы в любом случае, даже если уберете из события инициализации или загрузки формы загрузку данных, это не поможет. Просто после появления формы она опять перестанет отвечать. Раньше или позже это случится, не важно. Как мне кажется, если интерфейс зависнет на длительное время уже после инициализации и отображения формы, будет еще хуже. Пока форма не появилась, я хотя бы жду, когда она загрузится, а если она открылась и замерла, то я скорее подумаю, что она умерла. При этом, после её появления, если форма долго не будет отвечать, винда её предложит убить и дело с концом. Если форма, не может работать без этих данных, то добавьте для формы состояние отражающее её загрузку. Форма откроется, на нет будет написано: "Загружаюсь" и заблокируйте интерфейс, загрузите данные в отдельном потоке или асинхронно, и смените состояние на "Загрузилась". Никаких волшебных решений через параметр или смену события вы не найдете, такое поведение можно только ручками сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 15:21 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
Спасибо. Решил просто - добавил Msgbox перед загрузкой данных типа "Привет, ля-ля-ля. Нажмите ОК для загрузки данных". Понимаю, что это решение из серии "забить гвоздь микроскопом". Посоветуйте книги-статьи, чтобы почитать про потоки и работу с ними. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 15:27 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 15:30 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
IFKСпасибо. Решил просто - добавил Msgbox перед загрузкой данных типа "Привет, ля-ля-ля. Нажмите ОК для загрузки данных". Понимаю, что это решение из серии "забить гвоздь микроскопом". Посоветуйте книги-статьи, чтобы почитать про потоки и работу с ними. Спасибо!это называется костыль и даже для костыля звучит очень бредово :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 16:16 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
Roman MejtesIFKСпасибо. Решил просто - добавил Msgbox перед загрузкой данных типа "Привет, ля-ля-ля. Нажмите ОК для загрузки данных". Понимаю, что это решение из серии "забить гвоздь микроскопом". Посоветуйте книги-статьи, чтобы почитать про потоки и работу с ними. Спасибо!это называется костыль и даже для костыля звучит очень бредово :) Что имеем, то и используем. Не все же ох...тельные программисты, как вы. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 16:37 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
IFK, не надо быть ох.. программистом, чтоб написать в начале метода Async, а перед методов запроса Await, но дело ваше, удачной разработки ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 16:48 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
Roman MejtesIFK, не надо быть ох.. программистом, чтоб написать в начале метода Async, а перед методов запроса Await, но дело ваше, удачной разработки Спасибо, конечно, но написать Async и Await, я думаю, дело не ограничивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 17:06 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
IFK, и не начинается :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 17:07 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
ViPRosIFK, и не начинается :) Тем более! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 17:20 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
Тут нет ничего хитрого. Главное понять, почему такое происходит, и как с этим бороться. Async, await, thread, task - это просто инструменты. По факту Вы делаете загрузку в основном потоке, а он и отвечает за визуализацию. Если хотите, чтобы визуализация не прерывалась - воспользуйтесь одним из упомянутых инструментов для загрузки данных не останавливая главный поток. Вариант "пусть отрисуется, а там хоть трава не расти" категорически не рекомендую. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 19:02 |
|
Полная отрисовка формы перед загрузкой данных
|
|||
---|---|---|---|
#18+
IFKПосоветуйте книгиесли уж о книгах, то принцип асинхронности довольно хорошо расписан в справочнике Албахари C# 5.0 (6.0, 7.0). Там от печки, то есть начиная с потоков, потом задачи, а потом уже await и во что он компилируется ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 19:12 |
|
|
start [/forum/topic.php?fid=20&msg=39725127&tid=1399182]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
1ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 148ms |
0 / 0 |