gpt4 book ai didi

c# - 进度条有效但标签未更新

转载 作者:行者123 更新时间:2023-11-30 13:23:31 24 4
gpt4 key购买 nike

我有一个带有接口(interface)的库。

Public Interface Progress
{
int ProgressValue{get;set;},
string ProgressText{get;set;},
}

库有一个方法 Create(伪代码):

Public Class TestLibrary
{

Progress _progress;

Public void Create()
{
foreach(var n in TestList)
{
// Do Something
_progress.ProgressValue = GetIndex(n);
_progress.ProgressText = "Updating..." + n;
}
}
}

我有一个引用此库并调用 Create 方法的项目。它甚至实现了界面进度。

Public Class TestProject : Progress
{
public int ProgressValue
{
get{return progressBar1.Value;}
set{progressBar1.Value = value;}
}

public int ProgressText
{
get{return label1.Text;}
set{label1.Text = value;}
}
}

现在,当我运行应用程序时,进度条会正常运行并正确显示进度,但 label1 的文本根本没有改变。但它确实在 for 循环的末尾发生变化并显示循环中的最后一项。谁能帮我解决这个问题?

注意:所有这些代码都是直接编写的,没有经过测试,因为我现在没有我的应用程序。对于任何语法错误,我们深表歉意。

最佳答案

听起来您的所有工作都是在 UI 线程上完成的。不要那样做。

相反,在后台线程中运行循环本身,并使用 Control.InvokeControl.BeginInvoke(可能在 Progress 实现中) 编码对 UI 线程的调用只是为了更新 UI。这将使您的 UI 在处理过程中保持响应(并能够更新标签等)。

关于c# - 进度条有效但标签未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11080164/

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