gpt4 book ai didi

c# - 如何使用 dispatchertimer 每 30 秒检查一次而不影响 c# 中的 UI?

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:56 24 4
gpt4 key购买 nike

我曾尝试使用以下代码每 30 秒检查一次来自服务器的报告,但在 30 秒后,应用程序挂起了几秒钟。如何避免挂起问题。下面的代码我试过了,想在这方面做出什么改变?

System.Windows.Threading.DispatcherTimer dispatcherTimer2 = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer2.Tick += new EventHandler(dispatcherTimer2_Tick);
dispatcherTimer2.Interval = new TimeSpan(0, 0, 30);


Public void dispatcherTimer2_Tick(object sender, EventArgs e)
{
dispatcherTimer2.start();
//code for function call autoreport();
}

最佳答案

DispatcherTimer 回调在主 UI 线程上执行并阻止它。使用 System.Threading.Timer,如果您需要从计时器回调更新用户界面,请使用以下方法之一 调度程序调用过载。在代码中是这样的

public partial class MainWindow : Window
{
System.Threading.Timer timer;
public MainWindow()
{
InitializeComponent();
timer = new System.Threading.Timer(OnCallBack, null, 0, 30 * 1000);
}


private void OnCallBack(object state)
{
//code to check report
Dispatcher.Invoke(() =>
{
//code to update ui
this.Label.Content = string.Format("Fired at {0}", DateTime.Now);
});
}
}

关于c# - 如何使用 dispatchertimer 每 30 秒检查一次而不影响 c# 中的 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622284/

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