【发布时间】:2013-05-23 03:21:35
【问题描述】:
这是我得到的错误:
发生“System.Threading.ThreadStateException”类型的异常 在 System.Windows.Forms.dll 中,但未在用户代码中处理
附加信息:当前线程必须设置为单线程 可以进行 OLE 调用之前的公寓 (STA) 模式。确保您的 主函数上标有 STAThreadAttribute。
我正在尝试为 Task 中的剪贴板分配一个值。当我执行代码时,我得到了上面的错误。
这里是剪贴板代码:
static public class ClipBoard
{
static private string _data = string.Empty;
static public Semaphore ClipBoardSemaphore = new Semaphore(1, 1);
static public void SetData(string data)
{
Clipboard.Clear(); //error here
Clipboard.SetDataObject(data, true);
_data = data;
}
static public string GetData()
{
return _data;
}
}
如您所见,清除剪贴板时会发生错误。 这是调用任务的代码:
for (int i = 0; i < zom.Count; i++)
{
Task t = Task.Factory.StartNew(zom[i].Process);
t.Wait();
}
【问题讨论】:
-
我正在使用控制台项目
-
对。那么你会使用winforms库吗? (System.Windows.Forms.Clipboard)
-
答案在错误信息中:“确保您的 Main 函数上标记了 STAThreadAttribute。”
-
是的,这是主要功能上的标记,但我仍然收到错误。
标签: c#