Search code examples
c#multithreadingformswindow

Infinite while loop with Form application C#


I need to run an infinite while loop when a form application starts. A form starts like this:

public Form1()
{
        InitializeComponent();
}

Now I want to run another function which will have an infinite loop inside with one second sleep time:

public void doProcess(){

    while(true){
         Thread.Sleep(1000);
         // other task
    }
}

How can I do this? When I call doProcess() in the constructor, it does not show the form. I tried to run the while loop for 10 iterations. The form showed up only after all the iterations are finished. I don't understand why it is happening.


Solution

  • You can start a new thread like this:

    new Thread(() => 
    {
        while (true)
        {
            Thread.Sleep(1000);
    
            //other tasks
        }
    }).Start();
    

    Although I suggest you read up on threading before you do. If you want to update the form from a different thread you should use: Form.Invoke().

    For example: w is the form

     w.Invoke((MethodInvoker) delegate
     {
         w.Width += 100;
     });