我遇到了一些每1秒刷新一次的控件的问题。 刷新的控件是3个进度条和3个标签。 但是在52分钟之后,这些标签变得奇怪,不再显示文字了。
勾选事件:
private void Timer_SystemInfo_Tick(object sender, EventArgs e)
{
Timer_SystemInfo.Stop();
float CPU_raw = CPUcounter.NextValue();
if (CPU_raw > 100)
return;
int CPU_value = int.Parse(CPU_raw.ToString("0"));
double RAM_raw = RAMcounter.NextValue();
int RAM_value = int.Parse(((TotalRAM - RAM_raw) / TotalRAM * 100).ToString("0"));
AvailableStorage = DriveInformation.AvailableFreeSpace / 1000000;
double AvailableStorageGB = double.Parse((AvailableStorage / 1000).ToString("0.##"));
int HDD_value = int.Parse(((TotalStorage - AvailableStorage) / TotalStorage * 100).ToString("0"));
DriveInfo[] Drives = DriveInfo.GetDrives();
if (Drives.Count() > 1)
{
int cnt = 1;
try
{
foreach (DriveInfo partition in Drives)
{
if (cnt > 1)
{
double Psize = partition.TotalSize / 1000000;
double Asize = partition.AvailableFreeSpace / 1000000;
int EXT_value = int.Parse(((Psize - Asize) / Psize * 100).ToString("0"));
PB_EXT.Value = EXT_value;
LB_extstorage.Text = EXT_value + "% - " + Asize.ToString("0") + " MB free";
if (!lbl_ext.Visible)
{
lbl_ext.Show();
LB_extstorage.Show();
PB_EXT.Show();
PB_EXT.BringToFront();
}
}
cnt++;
}
}
catch (Exception ex)
{
Console.WriteLine("Error when reading external drive" + ex.Message);
}
}
else
{
if (lbl_ext.Visible)
{
lbl_ext.Hide();
LB_extstorage.Hide();
PB_EXT.Hide();
}
}
PB_CPU.Value = CPU_value;
LB_CPU.Refresh();
LB_CPU.Text = CPU_value + "%";
PB_RAM.Value = RAM_value;
LB_RAM.Text = RAM_value + "%";
PB_HDD.Value = HDD_value;
LB_HDD.Text = PB_HDD.Value + "% - " + AvailableStorageGB + " GB free";
Timer_SystemInfo.Start();
}
这是2张照片。我想你可以注意到发生了什么。它发生在一段时间(分钟)之后。
https://i.stack.imgur.com/TNiAu.jpg 还有这个: https://i.stack.imgur.com/80fnT.jpg
控件看起来像这样。我希望这不是问题吗? 此外,我还有一个1秒的计时器来刷新时间/日期。 https://i.stack.imgur.com/NVPqe.png
这是整个设置: https://i.stack.imgur.com/tnbeM.png
更新1.0 我试图UI只更新CPU标签和进度条。它没有问题。接下来,我将尝试仅更新RAM,然后仅进行存储更新。
更新2.0 我删除了进度条的更新并在整个晚上运行。它似乎工作正常。更新进度条一定存在一些问题。它变薄了吗?高度为5px。接下来的测试将使进度条更高。
更新2.1 我发现进度条的高度为5px,半径也设置为5px。我删除了半径,不幸的是,PB仍然会导致问题。 接下来的测试是将PB的高度设置为20px,也没有半径。
更新3.0 我强烈怀疑PB代码不好。我用MetroFramework PB替换它们并进行测试。调试模式下93分钟,看起来很稳定。
答案 0 :(得分:0)
这本身就是一个糟糕的进步吧。进度条在一段时间后崩溃了。我将进度条从Bunifu替换为Metro。