c# - c#关闭winform后我的代码继续运行
问题描述
我有很多表格,我在我的 Main form 上管理它们。我使用 ShowDialog() 打开其他表单,并且我的一些表单涉及定时器发生的操作在关闭对话框后继续运行,我使用
this.Close();
关闭 showdialog 但它仍然在后面工作,然后在我的主窗体上显示 messagebox.show 。我的意思是它是否像它仍然处于活动状态但我关闭了对话框一样工作?
下面的代码只是其中之一,它适用于任务等待,我的其他表单使用计时器运行,我也遇到了同样的问题。
private async void ıconButton4_Click(object sender, EventArgs e)
{
saniye = 0;
if (hız <= 29)
{
MessageBox.Show("Başlamadan önce hızı da belirlemeliyiz", "Hız belirtilmedi", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
buttondurdur.Enabled = true;
button1.Enabled = false;
button2.Enabled = false;
menuStrip1.Enabled = false;
richTextBox1.Text = string.Empty;
TextFormatFlags flags = TextFormatFlags.Top | TextFormatFlags.Left |
TextFormatFlags.WordBreak | TextFormatFlags.NoPadding |
TextFormatFlags.TextBoxControl;
timer1.Enabled = true;
foreach (var word in GetWords())
{
richTextBox1.Text += (word + ' ');
kelimesayısı += 1;
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();
}
}
if (Saying.Length >= 150)
{
timer1.Stop();
MessageBox.Show("Okuma hızınız dakikada " + (kelimesayısı * 60) / saniye + " kelime ");
timer1.Enabled = false;
richTextBox1.Clear();
button1.Enabled = false;
button2.Enabled = true;
buttondurdur.Enabled = false;
Saying = string.Empty;
kelimesayısı = 0;
menuStrip1.Enabled = true;
saniye = 0;
}
else
{
MessageBox.Show("Seçilen metin çok kısa ", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Error);
timer1.Enabled = false;
richTextBox1.Clear();
buttondurdur.Enabled = false;
Saying = string.Empty;
saniye = 0;
kelimesayısı = 0;
button1.Enabled = true;
button2.Enabled = true;
menuStrip1.Enabled = true;
}
}
}
解决方案
您可能想尝试this.Dispose();
,而不是this.Close();
. 虽然这是一个更糟糕的解决方案,但在这种情况下它可能会更好。
推荐阅读
- c# - 每次创建对象时如何在c#中将对象值添加到列表<>并在最后打印列表
- python - 如何在打印语句中的变量旁边添加逗号和句点
- javascript - 如何用一个按钮在两个数组列表之间切换反应js
- visual-studio-code - 如何使用当前工作目录在 Visual Studio Code 中运行脚本
- python - 如何获得随机森林多类中一类的预测概率?
- solidity - 限制公众只铸造一个 ERC721 代币 (NFT) 且铸币价格为零的 Solidity 功能?
- swift - swift string diacriticInsensitive 无法正常工作
- javascript - 为什么每次我路由时都会触发 nextjs useEffect
- firebase - 无法发布应用程序:在 android studio-Playstore 中面临包名的问题
- android - Android Studio 找不到库依赖 'com.mapbox.mapboxsdk:mapbox-android-sdk:9.7.0'