C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■96010 / )  Re[2]: Task起動先が、Task起動元の終了を検知する方法について
□投稿者/ furu (78回)-(2020/10/15(Thu) 15:45:46)
No96009 (kiku さん) に返信
FormClosingイベントのタスク終了判定は
IsCompletedを使ったほうが
TaskEnd変数の処理がいらなくなり
すっきりします。

それとToken渡さなくても大丈夫な気がします。

    //private bool TaskEnd = false;
    private Task task;

    private void Form2_Shown(object sender, EventArgs e)
    {
        textBox1.AppendText("UDP通信タスクを起動します" + "\r\n");
        cts = new CancellationTokenSource();
        task = Task.Run(RunProcTask);
    }

    private void RunProcTask(C)
    {
        while (true)
        {
            if (cts.IsCancellationRequested) return;
            Thread.Sleep(1000);
            Invoke(new Action<string>(this._PutLog), "処理");
        }
    }

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        cts.Cancel();

        while (!task.IsCompleted)
        {
            Application.DoEvents();
        }
    }

返信 編集キー/


管理者用

- Child Tree -