我正在创建一个自动化测试运行应用程序。在该应用程序的这一部分中,我正在开发一个轮询服务器。它通过不断轮询web服务器来确定何时应运行新的自动化测试(用于GUI应用程序的夜间自动运行)。
当轮询服务器看到请求时,它会下载所有必要的信息,然后在后台工作线程中执行测试运行。问题是测试运行的某些部分包含OLE、COM和其他调用(例如Clipboard.Clear()
),这些调用发生在后台工作线程中。当其中一个这样的调用发生时,将引发以下异常:
必须将当前线程设置为单线程公寓 (STA) 模式才能进行 OLE 调用。请确保您的 Main 函数上已标记 STAThreadAttribute。
如何将后台工作线程标记为单线程公寓?我的Program.cs文件中的Main函数已经有了该属性。
Clipboard.Clear()
不是 COM,而是本地的 Windows API。 - Aliostad