内で実行されているクラス内でWebブラウザーを実行して、それが最初のWindowsで実行していたことはフォームアプリケーション、今私はそれを変換しますそれを行うには、コンソールアプリケーションである私はスレッドで私のクラスを実行し、STAで設定し、私のクラスの中で私は "新しい"キーワードを使用して通常の方法でWebブラウザーをインスタンス化する、私の問題は、私はThread.Join()を使用してEndless waitingを入力し、Application.ThreadExit()を使用しても何も起こらないので、Thread.Abort()を試したので、例外が無作為にスローされ続けます。コンソールアプリケーションでWebBrowserをインスタンス化する必要があるクラスを実行します。コンソールアプリケーション:私はいくつかのテキストデータを掻き出すために、WebBrowserコントロールを使用するクラスを作成したSTAスレッド
これは私が私のクラスのためのスレッドを作成する方法である:
var th = new Thread(() =>
{
var br = MyBrowsingClass;
br.NavigateTo(url);
System.Windows.Forms.Application.Run();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
return th;
と私のクラスの中、私は次のようにします。
wb = new WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(OnWebComplete);
CurrentState = Status.Navigating;
if (IsValidURL(GoogleQueryURL))
{
wb.NavigateTo(GoogleQueryURL);
}
MSDNから問題が一つだけのインスタンスが存在し得るということです。したがって、並列コンテンツ取得は簡単に行えません。 'Application.Exit()'を呼び出すことで 'Application.Run()'を終了するか、 'ダミー 'フォームを作成して' Application.Run(form1) 'に渡して' form1.Close() 'を閉じることができます。しかし、以下で説明したように、 'WebRequest'クラスを見てください。 –