Object reference not set to an instance of an object.

0

prosze o wskazanie bledu ....

z gory dziekuje :)

 delegate void DelegateThreadTask();
public:	 void Variables()
		{
			DelegateThreadTask ^ d = gcnew DelegateThreadTask(this,&Form1::ThreadTask);
			while(true)
			{
				audusd_signal_12_1++;
				if(d) d->Invoke();
				Thread::Sleep(100);
			}
		}
		 
private:   void ThreadTask()
{
	Sig12_1_1->Text = audusd_signal_12_1+"";// tutaj zaznacza 
}

drugi spsob :

 delegate void DelegateThreadTask();
public:	 void Variables()
		{

			while(true)
			{
				audusd_signal_12_1++;
				ThreadTask();
				Thread::Sleep(100);
			}
		}
		 
private:   void ThreadTask()
{
	if (Sig12_1_1->InvokeRequired)// tutaj zaznacza
	{
		DelegateThreadTask ^ d = gcnew DelegateThreadTask(this,&Form1::ThreadTask);
		Invoke(d);
	}
	else
	{
		Sig12_1_1->Text = audusd_signal_12_1+"";
	}
}

An unhandled exception of type 'System.NullReferenceException' occurred in Hedge v1.exe

Additional information: Object reference not set to an instance of an object.

0

Język? Co to robi?

0

jezyk C++

watek Varaiables co 100ms zwieksza wartosc zmiennej audusd_signal_12_1 o 1 .....

i chce aby ta wartosc byla wyswietala w kontrolce Sig12_1_1 ...

pzdr

0

Log błędy jasno stwierdza że to:
Sig12_1_1
nie jest przypisane do żadnego obiektu.
A język to raczej C++/CLI

0
Shalom napisał(a)

Log błędy jasno stwierdza że to:
Sig12_1_1
nie jest przypisane do żadnego obiektu.
A język to raczej C++/CLI

przepraszam ale nie zrozumialem :(
co to znaczy nie jest przypisany do zadnego obiektu ??
kompilacja przebiega pomyslnie bez bledow .. blad sie pojawia w momencie uruchomienia( Start Debuging)

zdr

0

Co to jest to Sig12_1_1 i gdzie masz to zainicjalizowane? Na c++ się nie znam, ale podejrzewam, że to działa analogicznie do C#. Czyli po prostu zrobiłes cos w rodzaju:

Twoja_klasa Sig12_1_1;

zamiast

Twoja_klasa Sig12_1_1 = new Twoja_klasa();

Jesli to nie to, tutaj -> http://tinyurl.com/6lc96ht masz opis najczęstszych przyczyn tego błędu, co prawda dla VB .NET ale zasada ta sama.

0

Sig12_1_1 to jest TextBox

jezeli ten kawalek kodu

 Sig12_1_1->Text = audusd_signal_12_1+"";

wywalam jako zdazenie po kliknieciu buttona do dziala bez problemowo

problem pojawa sie w momencie wywalania w watku

pzdr

0

Na c++ się nie znam, ale podejrzewam, że to działa analogicznie do C#. Czyli po prostu zrobiłes cos w rodzaju:
Twoja_klasa Sig12_1_1;

Jeśli to jest pole klasy, to co napisałeś działa jak w C#. Jeśli jednak będzie to zmienna lokalna, jest to odpowiednik konstrukcji

using (Twoja_klasa  Sig12_1_1=new Twoja_klasa)
{
 // reszta ciała funkcji
}

czyli tworzy w tym miejscu obiekt, który zostanie zniszczony przy wyjściu z funkcji.

żeby zadeklarować obiekt bez jego tworzenia (null) robi się

Twoja_klasa  ^Sig12_1_1;  // dla typów zarządzanych .Net
Twoja_klasa  *Sig12_1_1;  // dla typów natywnych
0

Czy, żeby korzystać z "using" klasa nie musi implementować IDisposable?

0

Za UI odpowiedzialny jest wątek główny. Żeby zmieniać UI z wątków pobocznych powinieneś użyć callback.
http://msdn.microsoft.com/en-us/magazine/cc188732.aspx
(co prawda VB.NET ale zasada ta sama zdaje się)

1 użytkowników online, w tym zalogowanych: 0, gości: 1