Тема Sleep In для цикла не работает wp7 - PullRequest
0 голосов
/ 11 декабря 2011

У меня проблема с этим фрагментом кода. Мне нужно сделать паузу в две секунды, чтобы увидеть изображения. Так что я уложил ветку в сон, но она не работает. Мне нужно подождать две секунды, пока я не перейду к следующему значению i.

for (int i = 0; i < media_count; i++)
{
    if (type_by_order[i].ToString().Equals("video"))
        Play_Graphics(name_file_by_order[i]);
    if (type_by_order[i].ToString().Equals("image"))
        ImageReadDecode(name_file_by_order[i]);
    Thread.Sleep(2000);
}

Подскажите, пожалуйста, что не так? Это не работает на Windows Phone 7?

1 Ответ

2 голосов
/ 12 декабря 2011

Как указывает Ганс, вы спите в потоке пользовательского интерфейса.Это предотвратит обновление пользовательского интерфейса до завершения цикла for.Убедитесь, что вы спите в фоновом режиме, а затем обновите поток пользовательского интерфейса.Вот и пример псевдокода

  BackgroundWorker bgw = new BackgroundWorker();
  bgw.DoWork += (sender, e) = {
     for loop {
        Deployment.Current.Thread.BeginInvoke(() => {
            ImageReadDecode
        });
        Thread.Sleep(2000);
     }
  }
  bgw.RunAsync();

Обратите внимание, что использование BeginInvoke не гарантирует, что ваши изображения будут добавлены / загружены по порядку одновременно.Он помещает его в поток пользовательского интерфейса и позволяет потоку пользовательского интерфейса определить, когда он его добавит.

Надеюсь, в этом есть какой-то смысл.Примеров более чем достаточно на стеке потока, как обрабатывать поток пользовательского интерфейса и фоновый поток.

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