- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个从外部源读取大量数据的循环。该过程大约需要 20 秒,我想向用户显示进度。我不需要任何花哨的进度条,所以我选择将我的进度绘制在一个标签中,上面写着“Step 1/1000”,然后更改为“Step 2/1000”等。
我的代码看起来像这样:
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
但是,在该分析过程中,屏幕“卡住”并且进度不显示为正在推进。我从我过去在 C++ 中理解这种行为,在那里我可能会有一个单独的线程显示一个进度条,从循环中接收通知,或者某种形式的重绘/刷新,或者强制窗口/应用程序处理它的消息队列。
在 C# 中执行此操作的正确方法是什么?我不受标签的束缚,所以如果有一个简单的进度条弹出屏幕我可以使用而不是这个标签,那也会很棒......
谢谢
最佳答案
将工作移至 BackgroundWorker并使用 ReportProgress方法。
for (i = 0; i < count; i++)
{
... do analysis ...
worker.ReportProgress((100 * i) / count);
}
private void MyWorker_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
taskProgressBar.Value = Math.Min(e.ProgressPercentage, 100);
}
关于c# - 如何在繁忙的循环中显示进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194620/
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
我们正在使用 PHP 和 Mysql 开发一个基于 Web 的应用程序。如您所知,使用 Web 界面备份大型数据库存在限制,因此我需要一个解决方案来通过以下条件备份我们的大型数据库: 该过程可以在没有
有什么方法可以检测主线程何时被锁定/忙碌(也就是不会响应触摸事件)? 可能的方向检查 dispatch_get_main_queue 的大小(但我不知道如何操作这个对象来查看它的大小) [[UIApp
我已在 Windows 7 64 位上安装了 WAMP。当我尝试启动它时,它说端口 80 被“服务器:Microsoft HTTPAPI/2.0”使用。 我检查了一下,没有安装IIS。我该怎么办? 最
我们有一个 mongoosejs 客户端,它查询大型 mongodb 集合(大约 1000 万条记录)并通过管道传输到转换流。当我们运行此代码时, Node 进程占用 100% CPU 并且变得繁忙,
我是一名优秀的程序员,十分优秀!