我有一个上下文菜单选项,用于制作屏幕截图:
trayMenu.MenuItems.Add("Make a screenshot", makeScreenShot);
private void makeScreenShot(object sender, EventArgs e)
{
Screenshot currentScreenshot = new Screenshot();
}
在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.Threading.ThreadStateException"出现在System.Windows.Forms.dll中,但未在用户代码中处理 更多信息:必须将当前线程指定为单线程流容器(STA),调用OLE成为可能。检查您的Main函数是否标记为属性STAThreadAttribute。 如果此异常处理程序可用,则可以安全地继续执行程序。