C#System.Threading.ThreadStateException尝试使用剪贴板时出现异常。SetImage()

C#System.Threading.ThreadStateException尝试使用剪贴板时出现异常。SetImage(),c#,windows,multithreading,forms,exception,C#,Windows,Multithreading,Forms,Exception,我有一个上下文菜单选项,可以制作屏幕截图: trayMenu.MenuItems.Add("Make a screenshot", makeScreenShot); private void makeScreenShot(object sender, EventArgs e) { Screenshot currentScreenshot = new Screenshot(); } 在屏幕截图类中,我有以下命令: Clipboard.Clear(); Clipb

我有一个上下文菜单选项,可以制作屏幕截图:

trayMenu.MenuItems.Add("Make a screenshot", makeScreenShot);

private void makeScreenShot(object sender, EventArgs e)
    {
        Screenshot currentScreenshot = new Screenshot();
    }
屏幕截图
类中,我有以下命令:

Clipboard.Clear();
Clipboard.SetImage(screenshot);
当我使用这个上下文选项时,一切都正常,但我也使用了一个特殊的.dll,它可以帮助我创建一些快捷方式组合。其中一个组合具有相同的事件处理程序

 HotKeysManager manager = new HotKeysManager();
 manager.AddHotKey(new HotKeyCombination(new Keys[] { Keys.LControlKey, Keys.E }, makeScreenShot));

private void makeScreenShot()
    {
        Screenshot screenshot = new Screenshot();
    }
问题是,当我试图使用快捷组合在剪贴板中设置图像时,它会导致
System.Threading.ThreadStateException

异常在这里抛出:
Clipboard.Clear()

例外说明:

System.Windows.Forms.dll中出现“System.Threading.ThreadStateException”类型的异常,但未在用户代码中处理 更多信息:必须将当前线程指定为单线程流容器(STA),以便调用OLE。检查主函数是否标记为attribute stathreadtribute。
如果此异常处理程序可用,则可以安全地继续执行程序。

来自异常的消息是什么?哪一行引发了实际的异常?剪贴板。SetImage()trows此异常发生时哪个线程调用
剪贴板。Clear()
?如何获取此信息?