WriteableBitmap в фоновом рабочем - PullRequest
       0

WriteableBitmap в фоновом рабочем

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

У меня сейчас цикл примерно такой:

foreach(var item in theList)
{
//create writeablebitmap from item.GetPicture() which returns a stream.
//do stuff with it
//save it to isolated storage
}

Это очень длительный процесс, потому что существует множество изображений. Я попытался поместить его в фоновый рабочий, но вы не можете создать WriteableBitmaps там (они должны быть в потоке пользовательского интерфейса). Проблема в том, что интерфейс полностью не отвечает.

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

1 Ответ

2 голосов
/ 23 декабря 2011
BackgroundWorker backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += (s, e) =>
{
    foreach(var item in theList)
    {
        var item _ = item;
        Deployment.Dispatcher.BeginInvoke(() =>
        {
            // do your stuff on UI thread with item_
        });
        Thread.Sleep(milliseconds); //experiment with delay to find balance between UI responsiveness and performance 
    }
};
backgroundWorker.RunWorkAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...