C # Как быстро изменить ширину границы? - PullRequest
0 голосов
/ 29 июня 2019

Я хочу сделать слайд в анимации. Я хочу сделать это, увеличив ширину границы. Для визуализации у меня есть граница, которая находится за эллипсом, и чтобы он скользил, я хочу быстро увеличить его ширину, как показано в коде.

while(Border.Width < 150)
{
      Border.Width += 4;
      System.Threading.Thread.Sleep(70);
}

Проблема в том, что он не будет увеличивать ширину границы, пока весь процесс не будет завершен, независимо от того, остановлю я нить на 70 или 1000 мс.

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Ваш код является синхронным. Вы должны использовать асинхронный код. Как Task.Factory.StartNew (), если вы используете .net framework 4.0. Если .net framework выше .net framework 4.0. Вы можете использовать async / await ключевое слово.

0 голосов
/ 29 июня 2019

Проблема в вашем коде заключается в том, что вы блокируете поток пользовательского интерфейса с помощью этого thread.sleep, поэтому он ничего не может сделать, пока вы не прекратите его блокировать.

Вы можете сделать родительский метод асинхронным и использовать:

await.Task.Delay(70);

Вместо сна.

Но вам действительно стоит взглянуть на анимацию.

WPF Анимация ширины границы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...