小编Noo*_*ion的帖子

如何在 C# Winforms 应用程序中取消执行长时间运行的异步任务

我是一个非常缺乏经验的 C# 程序员,需要帮助来管理我的程序流程。它是一个 WinFormApp,需要多个用户输入,然后使用它们与设备建立串行通信以进行测量。测量采用异步方法进行,运行时间约为 20 分钟。所以我正在使用

    void main()
    {
        //Setup
    }

    private void button1_Click(object sender, EventArgs e)
    {
        await measurements();
        //Plot results
    }

    private async Task measurements()
    {
        while(true){
        //Make some measurements
        await Task.Delay(120000);
        //Make measurements, present data in the UI form.
        //return if done
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在我需要制作一个按钮,使用户能够取消测量,以便更改某些输入或参数,然后重新启动测量。所以我添加了一个“取消”按钮。

    private void button7_Click(object sender, EventArgs e)
    {
        textBox64.Enabled = true;
        button6.Enabled = true;
        button5.Enabled = true;
        textBox63.Enabled = true;
        button3.Enabled = true;
        trackBar1.Enabled = true;
        timer.Enabled = true;
        button7.Enabled = false;
        clearData(); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading goto return exception

7
推荐指数
1
解决办法
4368
查看次数

标签 统计

c# ×1

exception ×1

goto ×1

multithreading ×1

return ×1