0

名前でフィルタリングされたSteamアイテムをhtmlファイルにして可視化するコンソールアプリを開発しています(Steamトレードボットを作っています)。

プログラムの一部で、フォームのロード時に Web ブラウザを含む Windows フォームを呼び出します(私のアプリはコンソール アプリケーション タイプです) 。

私のコンソールアプリケーション:

[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 に答える