我有一个侦听WPF应用程序命令的线程。如果WPF应用程序获取截取屏幕截图的命令,则任务将移交给“screenshotService”。我发现som代码在interweb的某个地方截取屏幕截图,似乎工作,但我还没想过....我不能从另一个线程中截取这个截图,给出了这个例外:
{"This API was accessed with arguments from the wrong context."}
左边说的是我的截图方法的签名从UI获取了一个UIElement,这个网格总是相同的,并且是用于takeScreenshot方法的构造函数。
我如何绕过这个截图?
答案 0 :(得分:1)
使用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)
{
}