Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有在STAThread内调用C构造函数?_C#_Multithreading_Xunit - Fatal编程技术网

C# 没有在STAThread内调用C构造函数?

C# 没有在STAThread内调用C构造函数?,c#,multithreading,xunit,C#,Multithreading,Xunit,我正在创建一个与基本家庭路由器交互的API。在这种情况下,唯一可行的方法是使用WebBrowser对象。我将该对象放在BrowserWrapper类中以隐藏大部分复杂性 这是我检索SSID的XUnit[事实] [Fact] public void GetSsid() { RouterApi api = new RouterApi(); string ssid = api.GetSsid(); Assert.NotNull(ssid); } RouterApi的构造函数 pri

我正在创建一个与基本家庭路由器交互的API。在这种情况下,唯一可行的方法是使用WebBrowser对象。我将该对象放在BrowserWrapper类中以隐藏大部分复杂性

这是我检索SSID的XUnit[事实]

[Fact]
public void GetSsid()
{
   RouterApi api = new RouterApi();
   string ssid = api.GetSsid();
   Assert.NotNull(ssid);
}
RouterApi的构造函数

private BrowserWrapper browserWrapper;

public RouterApi()
{
   try
   {
      browserWrapper = new BrowserWrapper();

      Thread browserThread = new Thread(() => { Application.Run(browserWrapper); });
      browserThread.SetApartmentState(ApartmentState.STA);
      browserThread.Start();
   }
   catch (Exception ex) { //Handle ex }
}
我知道BrowserWrapper构造函数没有被调用,因为在BrowserWrapper的构造函数中,我实例化了很多东西,其中一个是WebBrowser控件,当我尝试在api.GetSsid中与它们交互时,它们仍然为null。注意:我使用委托方法与RouterApi中的BrowserWrapper进行交互


我知道这一切都是可行的,因为我已经用这种方式编写了一个API,但这是我第一次使用XUnit,所以我认为问题就在那里。

在启动线程之前会调用构造函数。那不是你想要的。所以我应该移动到实例化BrowserWrapper的地方?BrowserWrapper不是我的WebBrowser,它只包含一个。