2010-02-22 5 views
0

Est-ce que quelqu'un a une idée pourquoi mon ListBox ne peuplerait pas lors de l'exécution dans la version non Visual Studio Debug? Lors de l'exécution dans la version de débogage (F5), ça marche parfaitement sans aucun point d'arrêt, mais quand je cours en mode non déboguage (Ctrl + F5), il n'est pas rempli.ListBox ne pas mettre à jour dans non déboguer

Je ne sais même pas par où commencer en ce qui concerne ce que google ne montre rien d'utile et je ne peux pas utiliser le débogueur car il fonctionne bien lors du débogage.

public partial class ErrorLog: Window 
    { 
     /// <summary> 
     /// Collection of all errors 
     /// </summary> 
     public static SafeObservable<ErrorMessage> ErrorList 
     { 
      get { 
       return ErrorLog.errorList; 
      } 
      set 
      { 
       ErrorLog.errorList = value; 
      } 
     } private static SafeObservable<ErrorMessage> errorList = new SafeObservable<ErrorMessage>(); 

     /// <summary> 
     /// Default constrcutor 
     /// </summary> 
     public ErrorLog() 
     { 
      InitializeComponent(); 
     } 

     private void Clear_Click(object sender, RoutedEventArgs e) 
     { 
      //ErrorLog.ErrorList.Clear(); 
     } 
    } 

Une classe SafeObservable est juste une extension de l'utilisation normale de fabrication de classe ObservableColleciton du distributeur d'invoquer si nécessaire pour mettre à jour l'interface utilisateur à partir d'un autre thread. J'utilise cette collection tout au long de mon projet dans environ 12 endroits différents et cela fonctionne parfaitement bien. Mais dans ce cas unique, ce n'est pas le cas.

Link to SafeObservable is here

Le code XAML est inférieure à

<Window x:Class="Dashboard.ErrorLog" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Dashboard" 
    Title="ErrorLog" Height="448" Width="822" WindowStyle="ToolWindow"> 
    <Grid Background="#222222"> 
     <ListBox Name="Error_listBox" ItemsSource="{Binding Source={x:Static local:ErrorLog.ErrorList}}" Margin="12,12,12,41" IsSynchronizedWithCurrentItem="True" /> 
     <Button Height="23" HorizontalAlignment="Left" Margin="12,0,0,12" Name="Clear" VerticalAlignment="Bottom" Width="75" Click="Clear_Click">Clear</Button> 
    </Grid> 
</Window> 

Toute aide est très appréciée.

+0

Y at-il des fichiers de données ou quoi que ce soit liées à la structure de répertoire que votre répertoire de débogage a cette version ne fonctionne pas? –

+0

Non, le répertoire de débogage est vide, je ne pense pas qu'il utilise le répertoire de débogage car il exécute la version release mais avec un débogueur attaché à celui-ci. –

+1

Avez-vous essayé des valeurs codées en dur dans votre collection pour que quelque chose soit garanti? –

Répondre

0

C'est vraiment étrange.

Cela fonctionne si j'appelle simplement n'importe quelle fonction de la fenêtre principale.

J'ai ajouté ErrorLog.ErrorList.Clear() juste après l'initialisation de la fenêtre principale, et il fonctionne correctement maintenant. Quelqu'un at-il des idées sur la raison pour laquelle c'est comme ça? Est-ce que c'est quelque chose à voir avec la collection étant statique?

Je n'aime pas avoir du code aléatoire comme ça juste pour faire fonctionner quelque chose ... Il doit y avoir une meilleure façon de le faire.

Merci pour la suggestion Austin

Questions connexes