首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Threading.ThreadstateException

System.Threading.ThreadstateException
EN

Stack Overflow用户
提问于 2010-04-02 11:50:12
回答 1查看 2.2K关注 0票数 2

我正在为office应用程序开发一个添加项。我试图在设计模式( powerpoint的设计模式)中显示当前放置在powerpoint幻灯片上的对象(自定义对象)的描述。当我单击我的加载项时,相关的对象描述将作为第一个选项卡页显示在选项卡式窗口上。

标签页上有一个按钮,当我点击它时,我需要将描述复制到windows剪贴板上。我尝试使用clipboardclass,它引发以下异常,System.Threading.ThreadstateException {“当前线程必须设置为单线程单元(STA)模式,然后才能进行OLE调用。请确保主函数上标记了STAThreadAttribute。”}

剪贴板代码: Clipboard.Clear() Clipboard.SetText(lblObjectID.Text)

我在网上搜索了一个解决方案,得到了几个答案,比如: 1.在调用Thread.CurrentThread.SetApartmentState(ApartmentState.STA)之前将STAThread放在主函数2. SetDataObject之前。

但我不知道该把第一个选项和第二个选项放在哪里没有效果。有人能帮帮我吗。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-04-02 13:26:46

默认情况下,WinForms是STA。您是在创建另一个线程还是使用BackgroundWorker?运行以下代码以确定您所处的模式:

代码语言:javascript
复制
MessageBox.Show(System.Threading.Thread.CurrentThread.GetApartmentState().ToString())

编辑:

但是,在调用剪贴板函数之前,也可以尝试使用这个命令

代码语言:javascript
复制
Application.OleRequired()
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2566463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档