为什么我无法在C#中创建System.Windows.Forms.Form的实例?

为什么我无法在C#中创建System.Windows.Forms.Form的实例?,c#,winforms,C#,Winforms,我有一个间歇性问题,无法在我的C#library中创建System.Windows.Forms.Form类的实例。我在我的程序中记录异常,但不幸的是,没有为此问题记录任何内容。它可能不相关,但我的库通过COM调用(即没有主方法) 所以我抛出了一个测试异常,它被成功捕获并记录了下来——所以我想也许消息循环中发生了一些不正常的事情 更新1 表单是使用线程中的以下代码创建的,该线程具有ApartmentState.STA集 someForm = new Form(); someForm.Vis

我有一个间歇性问题,无法在我的C#library中创建System.Windows.Forms.Form类的实例。我在我的程序中记录异常,但不幸的是,没有为此问题记录任何内容。它可能不相关,但我的库通过COM调用(即没有主方法)

所以我抛出了一个测试异常,它被成功捕获并记录了下来——所以我想也许消息循环中发生了一些不正常的事情

更新1 表单是使用
线程中的以下代码创建的,该线程具有
ApartmentState.STA

  someForm = new Form();
  someForm.Visible = false;
  someForm.Text = "Hello world!";

这只是一个猜测,因为您没有提供代码和很少的上下文,但是您可能缺少入口点方法(
Main
)上的
STAThread
属性?这对于使用COM的WinForms应用程序来说是必要的。

也许一些代码会对这个问题有所帮助。嗯,代码是如此庞大和复杂,我唯一能提供的就是伪代码,可能没有那么有用。我将更新我的问题,使其不那么含糊。啊,实际上入口点不是通过Main,而是通过COM调用。你见过
someForm=newform()吗抛出异常?我希望这是正确的答案!我喜欢人们在黑暗中射击并击中目标@伊恩:嘿,我也希望如此。这是一个游戏,真的-可能只是运气好!这是从经验中想到的第一个可能的解决方案。诺尔多林:我对代码进行了更多的研究,似乎我创建
表单
的线程确实有
ApartmentState.STA
传递给它的
SetApartmentState
方法。因此,我认为在这种情况下,缺乏STA不是问题所在。我无法创建
表单
实例的任何其他想法?也许是内存问题?@nbolton:好的,很高兴你至少检查过了。对不起,目前没有其他想法会让你知道我是否这样做。