Andere Funktionen reagieren nicht solange schleife läuft!?



  • Hallo,

    Leihe!!

    wie binde ich bei c++/CLI Unterprogramme oder Pointer ein?

    Habe bei einem Button einen Sleep(1000) eingebuneden, nur reagieren dann die andern Butons in der Zeit bis er aus der Schleife springt nicht.

    Habt Ihr eine Lösung für mich?

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {	
    		for (int y = 1; y <= 100; y++)
    		{
    			this->progressBar1->Value = y;
    			System::Threading::Thread::Sleep(1000);
    		}
    		}
    


  • Sleep blockiert das Programm, Löse das über einen Timer.

    Und: Lass als Anfänger bzw. Laie die Finger von c++/CLI:

    https://www.c-plusplus.net/forum/263084



  • Danke,

    kann schon bischen c++..

    hast du ien kleines Beispiel mit den timer?



  • Dann such dir ein anderes natives C++ UI-Framework: [HOWTO] Welches Toolkit für GUIS?

    Mit C++/CLI ("Managed C++") wirst du nicht glücklich...



  • jiri schrieb:

    Danke,

    kann schon bischen c++..

    hast du ien kleines Beispiel mit den timer?

    void OnTimer()
    {
      this->progressBar1->Value = m_y;
    
      if (++m_y > 100) 
      {
         Timer->Enabled = false;
      }
    }
    
    void OnButtonClick()
    {
      m_y=0;
      Timer->Enabled = true;
    }
    


  • wie stelle ich denn wert des timers ein?



  • Schau dir die Doku dazu in der MSDN an: Timer

    Und das wäre nur das kleinste Problem, mit dem du bei C++/CLI Schwierigkeiten haben wirst...



  • Hallo,

    das mit den Timer geht=>OK

    nur auf den timer1->Interval = 5000; regiert er nicht!

    möchte die Processbar unterschiedlch schnell laufen lassen!

    gruß



  • static void TimerEventProcessor(Object^ /*myObject*/, EventArgs^ /*myEventArgs*/)
    		{
    		//	timer1->Stop();
    
    			//	timer1->Enabled = true;
    
    		}
    
    		int i;
    
    		int j;
    
    		void OxTimer()
    		{
    
    			for (j = 0; j < 100000;j++){
    
    				//this->textBox1->Text = (j).ToString();
    				OnButtonClick();
    			}
    			//j = 0;
    
    		}
    
    		void OnTimer()
    		{
    
    			this->progressBar1->Value = i;
    
    			timer1->Tick += gcnew EventHandler(TimerEventProcessor);
    
    			// Sets the timer interval to 5 seconds.
    			timer1->Interval = 5000;
    			timer1->Start();
    
    		}
    
    		//	if (++i > 100)
    		//	{
    		//		timer1->Enabled = false;
    		//	}
    		//}
    
    		void OnButtonClick()
    		{
    		//i = 0;
    			//timer1->Enabled = true;
    			timer1->Start();
    
    			timer1->Stop();
    		}
    


  • hab schon einiges Probiert!

    Geht noch immer nicht!

    was währe die Alternative für C++/CLI?



  • jiri schrieb:

    was währe die Alternative für C++/CLI?

    C# ist das was du suchst. C++/CLI ist für das was du offenbar machen willst vollkonmmen ungeeignet.



  • mit c# bin ich in 30min weitergekommen als 1 woche mit c++/CLI



  • 😉


Log in to reply