尝试使用Clipboard.SetImage()时出现C#System.Threading.ThreadStateException

时间:2014-08-29 14:09:50

标签: c# windows multithreading forms exception

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

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。 如果此异常处理程序可用,则可以安全地继续执行程序。

0 个答案:

没有答案