代码之家  ›  专栏  ›  技术社区  ›  H4mm3rHead

WPF从主线程以外的其他线程截图

  •  2
  • H4mm3rHead  · 技术社区  · 15 年前

    我有一个线程可以监听WPF应用程序的命令。如果wpf应用程序得到一个截屏命令,那么任务将移交给“screenshotservice”。我发现som代码可以在InterWeb上的某个地方截图,似乎可以工作,但我没有仔细考虑过……我不能从另一个线程截图,给出以下例外:

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

    左边说的是,我的截图方法的签名从UI中获取一个ui元素,这个网格总是相同的,并传递给takescreenshot方法的构造函数。

    我该怎么到处拍这个截图呢?

    1 回复  |  直到 15 年前
        1
  •  1
  •   luvieere    15 年前

    使用调度员或后台工作人员执行此项工作:

    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)
    {
    }