0

这是我得到的错误:

System.Windows.Forms.dll 中出现“System.Threading.ThreadStateException”类型的异常,但未在用户代码中处理

附加信息:在进行 OLE 调用之前,必须将当前线程设置为单线程单元 (STA) 模式。确保您的 Main 函数上标记了 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();
}
4

1 回答 1

3

剪贴板只能从 STA 线程(通常是 UI 线程)访问。因此,您需要调用 UI 线程或另一个 STA 线程来对剪贴板执行任何操作。

于 2013-05-23T03:24:45.057 回答