C#、VS2010を使用して、私は意味をなさない何かを持っています。C#:私のバックグラウンドワーカースレッドシグナリングは、なぜそうでないときに処理されるのですか?
起動時に、プログラムはテキストファイルから数百kを読み込む必要があります。ロードコードが正常に動作していることを確認した後、私はバックグラウンドスレッドでそれを投げました。これがIDE内から実行されている限り、すべては問題ありませんが、スタンドアロンで実行されているときには、スレッドは実行されていないときに終了すると言います。これはもちろんブームになります。
トリガコード:
BackgroundWorker Background = new BackgroundWorker();
Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DatabaseLoaded);
Background.DoWork += new DoWorkEventHandler(delegate { Database.Load(); });
Background.RunWorkerAsync();
とブームを起こっているものはDatabaseLoaded()
です。
私は、何が起こっているのかを追跡するためにメッセージボックスをいくつか入れました。Load()
メソッドの最初と最後の行と最初の行はDatabaseLoaded()
です。
IDEでこれは私の期待通りにトリガーします:Load()
begin、Load()
done、DatabaseLoaded()
。ただし、スタンドアロンで実行するとLoad()
が始まり、DatabaseLoaded()
と処理されない例外ボックスが表示されます(ローダーは空のテーブルを作成することさえできません)。
Microsoftは何ですか?
これだけです。何らかの理由でGetExecutingAssembly()が発生しました。場所が異なるパスを返しましたが、すべてが見つかりませんでした。 –