2016-06-23 2 views
0

htmlファイル(私はスチーム・トレード・ボットを作っています)を作成して名前でフィルタリングされたスチーム・アイテムを可視化するコンソール・アプリケーションを開発しています。スレッド・テスト例外のためにWebブラウザ・フォームを開いた後にコンソール・アプリケーションがクラッシュする

フォームのロード時にウェブブラウザがGoogleにデバッグ用にナビゲートするように設定されているときに、私はウェブブラウザ(私のアプリケーションはコンソールアプリケーションタイプ)を含むWindowsフォームを呼び出しますが、これはerror

マイコンソールアプリケーション:

[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"); 
} 

私は解決策を見つけることができません。私は新しいスレッドを作ろうとしましたが、それは動作しませんでした。

答えて

0

さて、エラーメッセージには、現在のスレッドがシングルスレッドのアパートメントにないために...と書かれています。

あなたは既にSTAThread属性を持っていますが、あなたは、スレッドの記入方法にそれを適用する必要があり、スレッドの起動時に実行される方法、すなわち、どのようなあなたのケースでは、おそらくMain方法です:

class Program 
{ 
    [STAThread] 
    static void Main(string[] args) 
    { 
    // ... 
関連する問題