如何停止等待任务?

How to stop an await Task?

private async void button1_Click_1(object sender, EventArgs e)
{
    foreach (var word in GetWords())
    {
        richTextBox1.Text += (word + ' ');
        await Task.Delay(hız);

        Size textSize = TextRenderer.MeasureText(richTextBox1.Text, richTextBox1.Font,
            richTextBox1.Size, flags);

        if (textSize.Height >= (richTextBox1.Height - 40))
        {
            richTextBox1.Clear();
        }
    }  
}

这是我使用的代码。它有效,但我想随时停止它,然后从我离开的地方继续。问题是我不知道怎么停下来。

如果你想暂停并继续任务,简单的方法是使用布尔值,如:

private volatile bool _isPaused = false;
private async void button1_Click_1(object sender, EventArgs e)
{
    foreach (var word in GetWords())
    {
        richTextBox1.Text += (word + ' ');

        do
        {
            await Task.Delay(hız);
        } while (_isPaused);

        Size textSize = TextRenderer.MeasureText(richTextBox1.Text, richTextBox1.Font, richTextBox1.Size, flags);


        if (textSize.Height >= (richTextBox1.Height - 40))
        {
            richTextBox1.Clear();
        }
    }
}

private async void pauseContinue_Click(object sender, EventArgs e)
{
    _isPaused = !_isPaused;
}

volatile关键字是以线程安全的方式操作原始变量。