Loading...
Woofles avatar Woofles 7 Точки

Delay във WindowsForms application

Здравейте!

Това което се опитвам да направя е да променя цвета на определен TextBox и след, примерно, половин секунда да го сменя отново. (като сигнал че потребителят е направил някаква грешка примерно.)

Има ли някакъв "бърз" начин за подобно забавяне/отлагане/... , в рамките на няколко реда, или трябва да го изграждам сам?
От StackOverflow за сега попадам или на Thread.Sleep() , което ... явно няма как да ми свърши работа, или на решения които са с дължината на половината ми изписан до момента код.

Благодаря предварително!

0
Programming Basics 19/07/2016 20:35:31
RoYaL avatar RoYaL Trainer 6849 Точки

За да направиш изчакване и то да не повлияе на главната графична нишка, трябва да го направиш на друга нишка или поне да го направиш асинхронно. C# за щастие има богато и лесно API за реализиране на асинхронни операции. Погледни за async/await ключовите думи.

2
Woofles avatar Woofles 7 Точки

Не съм много сигурен как ще ми помогне за конкретният ми случай, но май ще ми е от полза. Благодаря ти. На мен ми трябва просто кратка пауза от порядъка на половин секунда между две операции а не едновременно извършване.
Пробвах със следното по-рано днес:
   long time = DateTime.Now.Ticks;
   this.textBox1.BackColor = Color.Bisque;
   while (DateTime.Now.Ticks < time + 5000000) { }
   this.textBox1.BackColor = Color.White;
но колкото и тика да сложа, резултат от вторият ред не се вижда. Не би ли трябвало той да се изпълни и визуализира и чат тогава да започне цикъла?
Ако направя таск от ред2 и сложа await точно след него дали ще има разлика? Или мисленето ми в случая е грешно.

0
cheresharov avatar cheresharov 42 Точки

Сложи Application.DoEvents(); веднага след първата смяна на цвета.

 

А закъснение можеш да сложиш и с Thread.Sleep(1000); , но добави using System.Threading;

0
20/07/2016 20:25:20
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.