0

我正在开发一个控制台应用程序,通过制作一个 html 文件(我正在制作一个蒸汽交易机器人)来可视化按名称过滤的蒸汽项目。

在程序的一部分中,我调用一个包含 Web 浏览器(我的应用程序是控制台应用程序类型)的 Windows 表单,当表单加载时,Web 浏览器设置为导航到 google 仅用于调试,但我收到此错误

我的控制台应用程序:

[STAThread]
public override void OnMessage(string message, EChatEntryType type)
{
    switch(message)
    {
        ....
        case "!show":
        {
            Application.EnableVisualStyles();
            Application.Run(new Form1());
            break;
        }
    }
}

和我的表格:

private void Navigate(String address)
{
    if (String.IsNullOrEmpty(address)) return;
    if (address.Equals("about:blank")) return;
    if (!address.StartsWith("http://") &&
        !address.StartsWith("https://"))
    {
        address = "http://" + address;
    }
    try
    {
        webBrowser1.Navigate(new Uri(address));
    }
    catch (System.UriFormatException)
    {
        return;
    }
}  
private void Form1_Load(object sender, EventArgs e)
{
    Navigate("google.com");
}

我找不到解决方案。我试图创建一个新线程,但它没有用。

4

1 回答 1

0

好吧,错误消息说:...因为当前线程不在单线程单元中。

您已经有一个STAThread属性,但是您需要将其应用于线程的入口方法,即线程启动时执行的方法,在您的情况下可能是Main方法:

class Program
{
  [STAThread]
  static void Main(string[] args)
  {
  // ...
于 2016-06-23T21:12:18.440 回答