Легаси проект, говнокод — все как мы очень любим (на самом деле нет).
Поставлена задача — выполнить небольшую задачу на несколько секунд, в фоновом треде, чтобы интерфейс нормально перерисовывался, но и в то же время надо заблокировать интерфейс от любых действий, чтобы юзверь чего-нибудь не учудил в это время.
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?