2016-06-30 2 views
0

привет, почему же этот код делает меня исключением.Событие по значению изменено

namespace Test_Inotify 
{ 
class Test_Onchange 
{ 
    private int value; 
    private object _lock = new object(); 
    /*removed private object _lock;*/ 

    public event System.EventHandler ValueChanged; 

    protected virtual void OnValueChange() 
    { 
     lock (_lock) 
     { 
      if (ValueChanged != null) 
       ValueChanged(this, EventArgs.Empty); 
     } 
    } 

    public int Value 
    { 
     get { return this.value; } 
     set 
     { 
     this.value = value; 
     OnValueChange(); 
     } 
    } 
} 
} 

И форма

namespace Test_Inotify 
{ 
public partial class Form1 : Form 
{ 
    Test_Onchange ValueClass ;//ForceValue removed; 

    public Form1() 
    { 
     InitializeComponent(); 
     /* Test_Onchange removed*/ ValueClass = new Test_Onchange(); 

     ValueClass.ValueChanged += new EventHandler(EventValueChanged); 

     for (int i = 0; i < 10; i++) 
     { 
      Random Rndvalue = new Random(); 
      int RandVal = Rndvalue.Next(0, 100); 
      ValueClass.Value = RandVal; 
      System.Threading.Thread.Sleep(500);   
     } 

    } 
    private void EventValueChanged(object sender, EventArgs e) 
    { 
     int valueforce = ValueClass.Value; /*removedForceClass.Value;*/ 
     MessageBox.Show("Event raised"+valueforce); 
    } 
} 
} 

Я думаю, что в EventValueChanged .... но я ничего не изменить в значениях, я только скопировать его в локальной переменной.

Может ли кто-нибудь мне помочь?

+0

В чем исключение? – Martheen

+2

Добро пожаловать в StackOverflow! Почему бы вам не сказать нам, что исключение исключено и _where_? Исключение имеет _message_, который обычно сообщает вам, что пошло не так, и трассировка _stack_, которая сообщает вам, где. –

+1

Возможный дубликат [Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

ответ

0

Как об этом:

Test_Onchange ForceClass = new Test_Onchange(); 
ForceClass.ValueChanged += new EventHandler(EventValueChanged); 

и

ForceClass.Value = RandVal; 

почему у вас ForceClass и ValueClass? и ForceClass всегда NULL

0

Вы создаете новый объект типа Test_Onchange здесь

Test_Onchange ValueClass = new Test_Onchange(); 
ValueClass.ValueChanged += new EventHandler(EventValueChanged); 

Но в случае, вы используете глобальный объект ForceClass. Вы получите исключение NullReferenceException, потому что ваш ForeClass не создается. Заменить код следующим образом:

ForeClass = new Test_Onchange(); 
ForeClass.ValueChanged += new EventHandler(EventValueChanged); 

for (int i = 0; i < 10; i++) 
{ 
    Random Rndvalue = new Random(); 
    int RandVal = Rndvalue.Next(0, 100); 
    ForeClass.Value = RandVal; 
    System.Threading.Thread.Sleep(500);   
} 
+0

Да, спасибо! Я изменил имя, но не везде .... и я был в многопоточных проблемах, и я подумал, что это ... извините ... – Jablonovo

 Смежные вопросы

  • Нет связанных вопросов^_^