WPF Сделать скриншот из другой темы, кроме основной темы - PullRequest
3 голосов
/ 22 сентября 2009

У меня есть поток, который слушает команды моего приложения WPF. Если приложение WPF получает команду для создания снимка экрана, задача передается службе «screenshotService». Я нашел код Сом, чтобы сделать снимок экрана где-то на веб-сайте, кажется, работает, но я не продумал это ... Я не могу взять этот снимок экрана из другого потока, выдав это исключение:

{"This API was accessed with arguments from the wrong context."}

Осталось сказать, что сигнатура моего метода снимка экрана берет UIElement из пользовательского интерфейса, эта сетка всегда одна и та же, и передается в конструктор метода takeScreenshot.

Как бы я обошел и сделал этот скриншот?

1 Ответ

1 голос
/ 22 сентября 2009

Используйте Dispatcher или BackgroundWorker для выполнения работы:

ThreadStart start = delegate()
{
   Dispatcher.Invoke(DispatcherPriority.Normal, 
                new Action<string>(TakeScreenshot), 
                "From Other Thread");
};

new Thread(start).Start();







BackgroundWorker _backgroundWorker = new BackgroundWorker();

_backgroundWorker.DoWork += _backgroundWorker_TakeScreenshot;


_backgroundWorker.RunWorkerAsync(5000);

void _backgroundWorker_TakeScreenshot(object sender, DoWorkEventArgs e)
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...