gpt4 book ai didi

c# - 使用后台线程时高效显示文件状态

转载 作者:太空宇宙 更新时间:2023-11-03 18:18:18 26 4
gpt4 key购买 nike

如何在使用后台线程时有效地显示文件的状态?

例如,假设我有一个 100MB 的文件:

当我通过线程执行下面的代码时(仅作为示例)它会在大约 1 分钟内运行:

foreach(byte b in file.bytes)
{
WriteByte(b, xxx);
}

但是...如果我想更新用户,我必须使用委托(delegate)从主线程更新 UI,下面的代码需要 - 永远 - 字面上我不知道我还等了多久,我创建了这篇文章甚至还没有完成 30%。

int total = file.length;
int current = 0;
foreach(byte b in file.bytes)
{
current++;
UpdateCurrentFileStatus(current, total);
WriteByte(b, xxx);
}

public delegate void UpdateCurrentFileStatus(int cur, int total);
public void UpdateCurrentFileStatus(int cur, int total)
{
// Check if invoke required, if so create instance of delegate
// the update the UI

if(this.InvokeRequired)
{

}
else
{
UpdateUI(...)
}
}

最佳答案

不要在每个字节上更新 UI。仅每 100k 左右更新一次。

观察:

int total = file.length;
int current = 0;
foreach(byte b in file.bytes)
{
current++;
if (current % 100000 == 0)
{
UpdateCurrentFileStatus(current, total);
}
WriteByte(b, xxx);
}

关于c# - 使用后台线程时高效显示文件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814604/

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