gpt4 book ai didi

C# 变量不会更新

转载 作者:太空狗 更新时间:2023-10-29 23:38:31 24 4
gpt4 key购买 nike

我正在编写一个 C# 程序来显示我的 PS3 的 CPU/GPU 温度。有一个连接按钮。这真的很好用,它向我展示了温度。来 self 的 PS3 的 CPU/GPU。

现在我已经实现了一个“刷新”按钮,它会启动一个计时器,持续 x 秒来执行此操作:

public void get_psdata()
{
//Get data from PS3
cputemp = PS3.GetTemperatureCELL();
gputemp = PS3.GetTemperatureRSX();
psversion = PS3.GetFirmwareVersion();
psversiontype = PS3.GetFirmwareType();

//Set data into Var
L_cputemp_show.Text = cputemp;
L_gputemp_show.Text = gputemp;
L_firmware_show.Text = psversion;
L_type_show.Text = psversiontype;

//Update Label
L_cputemp_show.Refresh();
}

所以这个“get_psdata”只在我第一次按下连接按钮时起作用。 (connect 按钮直接启动“get_psdate”函数,而 refresh 按钮做的有点不同,稍后你会看到...)

这是运行 get_psdata 的代码:

//B_connect, Connect Button
private void b_connect_Click(object sender, EventArgs e)
{
//Connect CCAPI to PS3 if Button clicked
PS3.ConnectTarget(psip);

//Check Connection
if (PS3.SUCCESS(PS3.ConnectTarget(psip)))
{
//Show Status
MessageBox.Show("Connected to: " + psip + "!");
this.L_status_show.Text = "Connected!"; L_status_show.ForeColor = System.Drawing.Color.Green;

//Call Function
get_psdata();
}
else
{
//Show Status
MessageBox.Show("Failed to Connect to: " + psip + "!");
this.L_status_show.Text = "Not Connected!"; L_status_show.ForeColor = System.Drawing.Color.Red;
}
}

为了测试,我向“get_psdata”函数添加了一个 Messagebox.Show 以查看它是否运行所有 x 秒...是的,它运行了,这是我的计时器:

        //Function to set refresh delay
public void refresh_delay()
{
MessageBox.Show("Delay set to " + refresh_int + " Seconds!");
refresh_int = refresh_int * 1000; //Change to Miliseconds
init_timer();
}
//Timer
public Timer timer1;
public void init_timer()
{
timer1 = new Timer();
timer1.Tick += new EventHandler(timer1_Tick);
timer1.Interval = refresh_int; // in miliseconds
timer1.Start();
}
public void timer1_Tick(object sender, EventArgs e)
{
get_psdata();
}

这就是我的计时器的开始:

    //B_set, Set refresh time button
private void B_set_Click(object sender, EventArgs e)
{
//Check refresh Value
refresh_string = TB_refresh.Text;

//Check empty
if (refresh_string != "")
{
//Check minimum
refresh_int = Convert.ToInt32(TB_refresh.Text);
if (refresh_int < 5)
{
DialogResult confirm = MessageBox.Show("This is not the delay you are looking for! \r (I recommend to set it bigger then 5) \r Continue with " + refresh_int + " Seconds?", "Realy dude?", MessageBoxButtons.YesNo);
if (confirm == DialogResult.Yes)
{
//Call Function
refresh_delay();
}
}
else
{
//Call Function
refresh_delay();
}
}
else
{
MessageBox.Show("Please set refresh delay!");
}
}

所以我确定代码将运行所有 x 秒,但标签仅在我点击连接按钮时更新,但如果我在使用 B_set 按钮连接后启动计数器则不会更新。

“get_psdata”中的变量没有显示更新后的值。他们只是显示第一个“Get”的结果。 为什么他们不显示最新结果?

最佳答案

如果我在新的 winforms 屏幕中使用您的代码,一切正常。但是,我确实对 get_psdata 使用了以下实现。

public void get_psdata()
{
var rnd = new Random();

//Set data into Var
L_cputemp_show.Text = rnd.Next().ToString();
L_gputemp_show.Text = rnd.Next().ToString();
L_firmware_show.Text = rnd.Next().ToString();
L_type_show.Text = rnd.Next().ToString();

//Update Label
L_cputemp_show.Refresh();
}

以 1 秒的间隔,这让我每秒在屏幕上看到新的值。你能试试这个代码吗?如果这一切正常,那么问题可能出在 PS3 对象不刷新其内部结构上?

关于C# 变量不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27556124/

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