gpt4 book ai didi

c# - 如何创建循环百分比(处理)[c#]

转载 作者:行者123 更新时间:2023-11-30 21:43:53 25 4
gpt4 key购买 nike

示例:做某事 9999 次(可能更多)

for (int i = 1; i <= 9999; i++)
{
// do something
label1.content = 100*i/9999 + "%" ;
}

我想在编译时显示 label1 上的循环百分比我不能做任何几毫秒的事情,我的标签只显示 100%。有人知道先生吗?谢谢。

最佳答案

您不能在同一线程上同时运行循环和更新 UI。这就是为什么您应该始终在后台线程上执行任何长时间运行的工作,并使用调度程序定期更新 UI。

在后台线程上运行一些代码的最简单方法是使用任务并行库 (TPL) 来启动一个新任务:

Task.Run(()=> 
{
for (int i = 1; i <= 9999; i++)
{
System.Threading.Thread.Sleep(1500); //simulate long-running operation by sleeping for 1.5s seconds...
label1.Dispatcher.BeginInvoke(new Action(() => label1.Content = 100 * i / 9999 + "%"));
}
});

my message box immediately show message after i run command while percentage is running

如前所述,任务正在另一个线程上执行。因此它将与 UI 线程并行运行。这就是为什么可以在循环运行时更新 UI 的原因。

您可以使用 Task.ContinueWith 方法在任务完成后显示 MessageBox:

int i = 1;
Task.Run(() =>
{
for (; i <= 9999; i++)
{
System.Threading.Thread.Sleep(1500); //simulate long-running operation by sleeping for 1.5s seconds...
label1.Dispatcher.BeginInvoke(new Action(() => label1.Content = (i / 9999) * 100 + "%"));
}
}).ContinueWith(t =>
{
MessageBox.Show("done..." + i.ToString());
}, System.Threading.CancellationToken.None, TaskContinuationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());

关于c# - 如何创建循环百分比(处理)[c#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41260778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com