剪贴板任务错误

时间:2013-05-23 03:21:35

标签: c#

以下是我遇到的错误:

  

发生了'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();
}

1 个答案:

答案 0 :(得分:3)

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