C #: Почему моя фоновая сигнализация рабочего потока выполняется, когда это не так?

C #, используя VS2010, и у меня есть кое-что, что не имеет смысла.

При запуске моей программе необходимо загрузить несколько сотен тысяч килобайт из текстовых файлов. . Убедившись, что код загрузки работает нормально, я бросил его в фоновый поток. Пока это запускается из среды IDE, все в порядке, но когда он запускается автономно, поток говорит, что готово, когда это не так. Это, конечно, идет бум.

Код триггера:

BackgroundWorker Background = new BackgroundWorker();
Background.RunWorkerCompleted += new RunWorkerCompletedEventHandler(DatabaseLoaded);
Background.DoWork += new DoWorkEventHandler(delegate { Database.Load(); });
Background.RunWorkerAsync();

и все, что идет бум, находится в DatabaseLoaded () .

Я поместил несколько сообщений, чтобы отслеживать, что происходит: первый и последние строки метода Load () и первая строка DatabaseLoaded () .

В среде IDE это срабатывает, как я и ожидал: Load () начало, Load () выполнено, DatabaseLoaded () . Однако при автономном запуске я получаю Load () начало, DatabaseLoaded () , а затем поле необработанного исключения (загрузчик даже не успел создать пустые таблицы, не говоря уже о том, чтобы заполнить их .)

Я чокнутый или Microsoft?

5
задан Gabe 20 December 2010 в 22:36
поделиться