private void button3_Click(object sender, EventArgs e)
{
Task.Factory.StartNew(() => {
Form1 form1 = new Form1();
form1.Name = "MyForm";
form1.Text = "子窗体";
form1.ShowDialog();
MessageBox.Show("aaaaaaa");
});
}
private void button4_Click(object sender, EventArgs e)
{
IntPtr handler = GetFormHandler("MyForm");
Form1 form = (Form1)Control.FromHandle(handler);
form.DialogResult = DialogResult.OK;
}
public IntPtr GetFormHandler(string name)
{
IntPtr formHadler = IntPtr.Zero;
Task task= Task.Factory.StartNew(() =>
{
foreach (Form v in Application.OpenForms)
{
if (v.Name == name)
{
v.Invoke(new Action(() =>
{
//此段中的线程是创建form1的线程,经测试此段不会阻塞,虽然此线程中 其他地方有form1.ShowDialog()
int sum = 8 * 9;
Thread.Sleep(1000);
sum = 8 * 8;
formHadler = v.Handle;
return;
}));
}
}
});
Task.WaitAll(task);
return formHadler;
}