パラメータがあり、戻り値が無いTaskの利用についてはこちらの記事を参照して下さい。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
namespace SimpleTask
{
public partial class FormTaskActionSimple : Form
{
public FormTaskActionSimple()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Task t1 = new Task(Proc1);
t1.Start();
Task t2 = new Task(Proc2);
t2.Start();
}
private void Proc1()
{
Thread.Sleep(3000);//重い処理
MessageBox.Show("Proc1が完了しました。");
}
private void Proc2()
{
Thread.Sleep(4000);//重い処理
MessageBox.Show("Proc2が完了しました。");
}
}
}
Task t1 = new Task(Proc1);
t1.Start();
private void Proc1()
{
Thread.Sleep(3000);//重い処理
MessageBox.Show("Proc1が完了しました。");
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
namespace SimpleTask
{
public partial class FormTaskActionSimple : Form
{
public FormTaskActionSimple()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
Task t1 = new Task(() = >Proc1());
Task t2 = new Task(() => Proc2());
t1.Start();
t2.Start();
}
private void Proc1()
{
Thread.Sleep(3000);//重い処理
MessageBox.Show("Proc1が完了しました。");
}
private void Proc2()
{
Thread.Sleep(4000);//重い処理
MessageBox.Show("Proc2が完了しました。");
}
}
}
private void button3_Click(object sender, EventArgs e)
{
Task t1 = new Task(() = >Proc1());
Task t2 = new Task(() => Proc2());
t1.Start();
t2.Start();
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Threading.Tasks;
namespace SimpleTask
{
public partial class FormTaskActionSimple : Form
{
public FormTaskActionSimple()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Task.Run(Exec1);
Task.Run(Exec2);
//この記述でもOK
/*
Task.Run((Action)Proc1);
Task.Run((Action)Proc2);
*/
}
private void button4_Click(object sender, EventArgs e)
{
Task.Run(() => Proc1());
Task.Run(() => Proc2());
}
private void Proc1()
{
Thread.Sleep(3000);//重い処理
MessageBox.Show("Proc1が完了しました。");
}
private void Proc2()
{
Thread.Sleep(4000);//重い処理
MessageBox.Show("Proc2が完了しました。");
}
}
}
Task.Run(Exec1);
Task.Run((Action)Proc1);
Task.Run(() => Proc1());
Task t1 = Task.Run(Proc1);