Tôi đang viết Chương trình C# để hiển thị Nhiệt độ CPU/GPU từ PS3 của tôi. Có nút kết nối. Điều này hoạt động thực sự tốt và nó cho tôi thấy Temp. từ CPU/GPU của PS3.C# Biến sẽ không cập nhật
Bây giờ tôi đã thực hiện một "refresh" nút, mà bắt đầu một bộ đếm thời gian cho tất cả Giây x để làm điều này:
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();
}
Vì vậy, đây "get_psdata" chỉ hoạt động trên lần đầu tiên, khi tôi bấm nút kết nối. (Các nút kết nối bắt đầu trực tiếp "get_psdate" chức năng, trong khi nút refresh không một chút khác nhau, như bạn có thể nhìn thấy sau ...)
Đây là đoạn mã để chạy 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;
}
}
để thử nghiệm, tôi đã thêm một Messagebox.Show đến chức năng "get_psdata" để xem nếu nó chạy tất cả Giây x ... có nó và đây là bộ đếm thời gian của tôi:
//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();
}
và đây là những gì bắt đầu bộ hẹn giờ của tôi:
//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!");
}
}
Vì vậy, tôi chắc chắn mã sẽ chạy hết x giây nhưng nhãn chỉ được cập nhật khi tôi nhấn nút kết nối, nhưng không nếu tôi bắt đầu bộ đếm sau khi kết nối với nút B_set.
Các biến từ "get_psdata" không hiển thị giá trị được cập nhật. Họ chỉ hiển thị kết quả từ lần đầu tiên "Nhận". Tại sao chúng không hiển thị kết quả mới nhất?
Bạn có thể thu hẹp câu hỏi của mình và chỉ đánh dấu một phần có vấn đề trong mã của bạn không? Cảm ơn và kính trọng, –
@AlexBell Okey vì vậy câu hỏi của tôi là: Làm cách nào để cập nhật Biến của tôi từ hàm get_psdata? Nó sẽ không hoạt động. Tôi không biết vấn đề ở đâu, đó là lý do tại sao tôi đã thêm rất nhiều mã. Sự thất bại có thể là phần mềm ... (?) – SnipeLike
Không chắc chắn nếu điều này là WPF hay WinForms, nhưng linh cảm của tôi là vấn đề có thể là với cố gắng để cập nhật các nhãn từ một chủ đề khác nhau (mà bộ đếm thời gian được sử dụng). Bạn có thể thử gửi các bản cập nhật cho chuỗi chính. – vesan