Приложение C # WPF вылетает в конце - PullRequest
1 голос
/ 23 ноября 2010

У меня есть простая программа. Его работа состоит в том, чтобы перемещать файлы из A в B (честно говоря, прославленный файл bat).

Проблема у меня в том, что она падает ... в конце.

App.xaml.cs:

<Application x:Class="app.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             xmlns:properties="clr-namespace:app.Properties" 
             StartupUri="Views\MainWindow.xaml">
    <Application.Resources>
        <properties:Settings x:Key="Settings" />
    </Application.Resources>
</Application>

App.CS:

using System.ComponentModel;
using System.Linq;
using System.Windows;
using app.Model;
using app.Properties;
using app.Views;

namespace app
{
    public partial class App
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            string xmlDoc = Settings.Default.Config;
            var parms = new MoveFilesParams(xmlDoc);
            Process.MoveFiles(parms);
        }
    }
}

Простое тело. Предполагая, что я не передаю параметр командной строки, он должен запускаться автоматически. С параметрами он запустит WPF.

Он извлекает настройки из xmlDoc, введенного в настройках приложения. Затем он передает эти настройки через класс Parms. Тогда он либо запускается, либо popu

При запуске я пробовал / ловил без ошибок внутри OnStartup - и он выдает ошибку после блока OnStarup с NullReferenceException.

Редактировать 1: Извините, если я не отвечаю достаточно быстро (Yay для нетерпеливых людей, понижающих голос, потому что они нетерпеливы), но я удалил фоновые рабочие части, так как сейчас не использую это Я все еще получаю ту же ошибку Null в конце. Здесь обновлен код для отражения удаления BackgroundWorker.

Редактировать 2: Удален аспект графического интерфейса в App.cs (так как фоновый рабочий и графический интерфейс вторичный atm). Так что эта программа, на данный момент, просто

  • нагрузка
  • извлекает XML-местоположение из app.config
  • загружает класс parm из XmlDoc
  • Перемещает файлы успешно
  • сбой с NullReferenceException - необработанная ошибка. Я могу закомментировать все, и это приводит к "завершению" OnStart

Ответы [ 2 ]

1 голос
/ 23 ноября 2010

Если ваш основной поток завершает работу до завершения фоновой задачи, и если BackgroundWorker создает фоновый поток (я думаю, что это так, но не уверен на 100%), то когда ваш поток пользовательского интерфейса выходит из фонового потока будет агрессивно выключен.

Старайтесь, чтобы ваш основной поток работал до тех пор, пока вы точно не убедитесь, что BackgroundWorker завершил работу, и посмотрите, все ли еще происходит сбой. Если это не так, значит, вы нашли проблему.

0 голосов
/ 23 ноября 2010

WPF Command Line

Я использовал этот вопрос (или один очень похожий) для настройки моей командной строки WPF. Должно быть, проблема возникла, когда я перестроил приложение и не удалил

StartupUri="Views\MainWindow.xaml"

Это означало, что после запуска процесса он будет пытаться получить доступ к неинициализированному объекту с ошибкой нулевого исключения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...