onidle loop auch in C# ?



  • hi, ich bein ein quereinsteiger in c#, komme aus der C++/MFC-Richtung.
    in der mfc gibts die onidle loop, welche ich nun in einem projekt in c# bräuchte.
    allerdings kann ich mit application.idle net wirklich viel anfangen, da das ja nur nach einer messagebehandlung aufgerufen wird, und nicht zyklisch, wenn keine message eintrifft (im leerlauf).

    ich würde folgenden C++ Code in C# benötigen, und bitte um hilfe bzw. tips :

    BOOL CApp::OnIdle(long lCount)
    {
    CWinApp::OnIdle(lCount);

    return TRUE; // WICHTIG !!!! ich will IMMER Wieder hier reinlaufen !!!
    }



  • versuch mal folgendes:

    #using System;
    #using System.Windows.Forms;

    class TheApp : Form
    {
    static void Main()
    {
    TheApp app = new TheApp();
    Application.Exit();
    }

    TheApp()
    {
    InitializeComponent();

    // hier könnte man zb directx initialisieren !

    while (Created)
    {
    MeineHauptschleife();
    // Wichtig für Eventhandler !!!!
    Application.DoEvents(); messages.
    }
    }

    private void InitializeComponent()
    {
    this.Name = "DXGameApp";
    this.Text = "DXGameApp";
    // Eventhandler
    this.KeyUp += new System.Windows.Forms.KeyEventHandler (this.MyKeyUp);
    }

    public void MeineHauptschleife()
    {
    // Hier wird getan, was getan werden muss....

    }

    // Eventhandler
    private void MyKeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    // Mit ESC Beende das Programm
    if (Keys.Escape == e.KeyCode)
    Close();
    }
    }

    Ich hab den code noch nicht testen können, er sollte aber funktionieren.





  • Hey danke, das funzt vorzüglich, genau wie ich wollte (is ne directx anwendung besser gesagt, es soll noch eine werden.... 😉 )


Anmelden zum Antworten