[WinForms] UseWaitCursor vs Enabled
От: CodeMonkey  
Дата: 15.02.19 00:24
Оценка:
Легаси проект, говнокод — все как мы очень любим (на самом деле нет).
Поставлена задача — выполнить небольшую задачу на несколько секунд, в фоновом треде, чтобы интерфейс нормально перерисовывался, но и в то же время надо заблокировать интерфейс от любых действий, чтобы юзверь чего-нибудь не учудил в это время.

        void RunCommandAsync()
        {
            Enabled = false;
            UseWaitCursor = true;

            void BackgroundAction(object state)
            {
                Thread.Sleep(TimeSpan.FromSeconds(5)); // doing something...

                BeginInvoke((Action)(() => {
                    UseWaitCursor = false;
                    Enabled = true;
                }));
            }

            ThreadPool.QueueUserWorkItem(BackgroundAction);
        }


Упс. Курсор не переключается на "песочные часы". Комментируем "Enable = false" — переключается. Раскомментируем — не переключается, остается стрелка.
Как сделать, чтобы работало и UseWaitCursor = true, и Enabled = false?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.