フォームから計算を行うスレッドを実行するだけなら async は必要無い、スレッドの終了を待つ await も必要ない。
Task.Run() で計算処理を別スレッドで実行して放置するだけ。
「Start」ボタンをクリックしたら、非同期で1秒毎にインクリメントしその結果を最後にMessageBoxに表示するサンプル。
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btnExec_Click(object sender, EventArgs e)
{
Task.Run(() =>
{
Increment();
});
}
private void Increment()
{
int i = 0;
while (i < 10)
{
i++;
Thread.Sleep(1000);
}
MessageBox.Show(i.ToString());
}
}
}
最近のコメント