C# 没有在STAThread内调用C构造函数?
我正在创建一个与基本家庭路由器交互的API。在这种情况下,唯一可行的方法是使用WebBrowser对象。我将该对象放在BrowserWrapper类中以隐藏大部分复杂性 这是我检索SSID的XUnit[事实]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
[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,它只包含一个。