Как заставить цикл работать бесконечно без действий пользователя - PullRequest
0 голосов
/ 21 ноября 2018

Я запустил небольшое приложение для развлечения, и оно должно заставить "form1" (см. Код) постоянно открывать новое окно.Это делает это, однако это делает цикл только после закрытия предыдущего окна.Таким образом, в основном необходимо постоянно открывать дополнительные окна одновременно, при этом пользователю не нужно закрывать уже открытое окно. Изображение текущего кода

Код всего файла:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PeppaPig
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
        loop:
            Application.Run(new Form1());
            goto loop;
        }
    }
}

Спасибо!Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Вы должны изменить свою основную функцию на что-то вроде этого.

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new Form1());

       while (true)
       {
            Form1 frm = new Form1();
            frm.Show();
       }
    }
0 голосов
/ 21 ноября 2018

Ваш код ожидает, пока ...

Application.Run(new Form1());

... не закончится.Чтобы достичь желаемого поведения, вы должны создать экземпляр Form1 и вызвать его Show ().

Для достижения бесконечного цикла существуют разные способы.Вот некоторые примеры:

while(true)
{
   //do something
}

или

for(;;)
{
    // do something
}

или как вы уже сделали

:loop
// do something
goto loop;

Так вот пример, как получить желаемое поведение:

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        while (true)
        {
            var newForm = new Form1();
            newForm.Show();
        }
    }
...