Witam

Do DataGridView mam zbindowaną klasę SortableBindingList<Item> via DataSource. W programie posiadam wątek który update'tuje mi tą listę z dość dużą(a raczej mega) częstotliwością. Problem pojawia się przy sortowaniu np używając timer'a. Ponieważ elementy na liście ulegną przetasowaniu podczas aktualizacji klasa w której mam zaimplementowany INotifyPropertyChanged wyrzuca mi out of range.O dziwo jak klikam na kolumnę do posortowania ręcznie to nigdy nie trafiam w Exception. Kod klasy w "skrócie":

 

 public class Item: INotifyPropertyChanged
    {
        private int _temp= 0;
        [...]
        public event PropertyChangedEventHandler PropertyChanged;

        public Item()
        {

        }
        public Item(int temp)
        {
            this._temp= temp;
        }
         /*Specified argument was out of the range of valid values.
            Parameter name: rowIndex*/
        private void NotifyPropertyChanged(String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

 public Double Temp
        {
            get
            {
                return this._temp;
            }

            set
            {
                if (value != this._temp && value != 0)
                {
                    this._temp= value;
                    NotifyPropertyChanged("Temp");
                }
            }
        }
[....]

Nie mam za bardzo pomysłu jak sobie z tym fantem poradzić. Jedyne co mi przyszło do głowy to na czas sortowania wyłączyć event odpowiadający za aktualizację. Tylko według mnie to rozwiązanie jest bardziej obejściem problemu. Natomiast wrzucając blok try{}catch{} spowoduje brak aktualizacji danego obiektu.

Druga kwestia to taka że DataGridView "miga" podczas automatycznego sortowania(co 5 sekund mam w Timer()) i szału można dostać jak się na to patrzy :-)

Czy ktoś z was ma może pomysł jak się z tym uporać? Zaznaczam także że dopiero niedawno zająłem się programowaniem wielowątkowym.

Pozdrawiam
Dawid