Как вызвать форму внутри другой задачи формы - PullRequest
0 голосов
/ 24 марта 2019

В своем приложении Windows Form я создал 2 формы.В форме 1, когда я нажимаю button1, запускается новая задача.Внутри задачи я создал экземпляр form2 и покажу form2.Я называю showData метод Form2.

//Form1
public event TickHandler Tick;
public EventArgs e = null;
public delegate void TickHandler(int a1, EventArgs e);

private void button1_Click(object sender, EventArgs e)
{
    Task.Factory.StartNew(() =>
    {
        Form2 form2 = new Form2();
        form2.Show();
    }
}

//Form2
public void showData(Form1 m)
{
    m.Tick += new Form1.TickHandler(test);
}

public void test(int a1,EventArgs e)
{
    Task.Factory.StartNew(() =>
    {
        for (int i = a1; i < 1000; i++)
        {
            label1.Invoke(new MethodInvoker(delegate { label1.Text = i.ToString(); }));
        }
    });
}

1 Ответ

1 голос
/ 24 марта 2019

Как предположил Кенни, я изменил код. теперь он работает так, как я ожидал.

 public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                Action act1 = (() =>
                {
                    Form2 form2 = new Form2();
                    form2.StartPosition = FormStartPosition.CenterParent;
                    form2.Show();
                });
                this.BeginInvoke(act1);
            });
        }
}

// ФОРМА2

private void Form2_Load(object sender, EventArgs e)
        {
            test(1);
        }
        public void test(int a1)
        {
            Task.Factory.StartNew(() =>
            {
                for (int i = a1; i < 1000; i++)
                {
                    label1.Invoke(new MethodInvoker(delegate { label1.Text = i.ToString(); }));
                }
            });
        }

Еще раз спасибо Кенни

...