Une exception non gérée du type 'System.De Windows.Balisage.XamlParseException' s'est produite dans PresentationFramework.dll

Je suis en train de travailler sur une petite application en C# /WPF qui est alimenté par des données sur le port série. Il lit également un fichier texte contenant des constantes afin de calculer quelque chose. Un gestionnaire d'événement est fait pour gérer les données entrantes quand il arrive:

_serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(Receive);

Ici est le gestionnaire de réception, avec un délégué qui est créé dans un Répartiteur, afin de poursuivre la mise à jour de l'INTERFACE utilisateur.

private delegate void UpdateUiTextDelegate(string text);

private void Receive(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    //collect characters received to our 'buffer' (string)
    try
    {
        //stops long running output timer if enabled
        if (dispatcherTimer.IsEnabled)
        {
            dispatcherTimer.Stop();
        }

        message = _serialPort.ReadLine();

        dispatcherTimer.Start();
        Dispatcher.Invoke(DispatcherPriority.Send, new UpdateUiTextDelegate(updateUI), message);
    }
    catch (Exception ex)
    {
        //timeout                
        dispatcherTimer.Start();
        SerialCmdSend("SCAN");
    }            
}

La dispatcherTimer permet de renvoyer les commandes à l'unité sur la ligne série, si elle ne parvient pas à obtenir toutes les données dans un laps de temps raisonnable.

En plus aussi la lecture à partir d'un fichier texte, l'application dispose de quelques raccourcis clavier gestes définie dans le constructeur de la fenêtre principale:

public MainWindow()
{
    InitializeComponent();
    InitializeComponent();

    KeyGesture kg = new KeyGesture(Key.C, ModifierKeys.Control);
    InputBinding ib = new InputBinding(MyCommand, kg);
    this.InputBindings.Add(ib);

    Start();
}

De sorte que le MainWindow.le xaml a cette liaison de commande code:

<Window.CommandBindings>
    <CommandBinding Command="{x:Static custom:MainWindow.MyCommand}"
                    Executed="MyCommandExecuted"
                    CanExecute="CanExecuteMyCommand" />
</Window.CommandBindings>

Concepteur Visual Studio se plaint d'invalide de balisage, mais toujours utilisés pour fonctionner correctement, jusqu'à ce que j'ai commencé à avoir ces erreurs lors de l'exécution du programme:

Une exception non gérée du type
'Système.De Windows.Balisage.XamlParseException' s'est produite dans
PresentationFramework.dll

Informations supplémentaires: "L'invocation du constructeur de type
'Vaernes.MainWindow " qui correspond à la spécifié de liaison des contraintes
a déclenché une exception.' Numéro de ligne '4' et la position de la ligne de '9'.

Ce type d'erreur s'affiche après de petites modifications de code. La dernière a été de remplacer le fichier texte lu par le programme, avec un autre avec le même nom (Ajouter un élément Existant...). J'ai cherché partout sur le web, pour les solutions, mais je ne peux pas trouver un qui est assez similaire à mon problème.

Je soupçonne qu'il a quelque chose à voir avec le Répartiteur de fil ou de l'Entrée des Liaisons.
J'ai aussi essayé d'ajouter un gestionnaire pour l'exception et a remarqué que l'expéditeur du Système.De Windows.Le filetage.Répartiteur.

Suggestions de quelqu'un?

Pourquoi il y a deux InitializeComponent();? En outre, quelle est la InnerException?
Eh bien, il est resté de code que j'ai copié à partir du web. Je suppose que je pourrais tout simplement supprimer l'un d'entre eux, mais l'erreur s'affiche toujours...:(
Ce n'est pas seulement un "guess" - vous ne devriez pas initialiser deux fois. Et encore une fois - ce qui est le InnerException?
Ok. Le InnerException: {"Index était en dehors des limites du tableau."} (de type System.De Windows.Le filetage.DispatcherUnhandledExceptionEventargs)...
Si vous avez besoin de regarder où cela est levée. Quelle est la pile des appels de l'exception?

OriginalL'auteur Morty | 2013-05-16