如何停止等待任务?
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关键字是以线程安全的方式操作原始变量。
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关键字是以线程安全的方式操作原始变量。