2

我正在尝试定期轮询服务器并获取 JSON,但由于某种原因,我在正在编写的空白应用程序中看不到参考 System.Timers。这是我的代码

public MainWindow()
{
    timer.Tick += new EventHandler(CheckJson_Click_1);
    timer.Interval = 30000; //30sec*1000microsec             
    timer.Enabled = true;                       
    timer.Start();
}

private async void CheckJson_Click_1(object sender, RoutedEventArgs e)
{
    var client = new HttpClient();
    client.MaxResponseContentBufferSize = 1024 * 1024;       
    var response = await client.GetAsync(new Uri("URI"));
    var result = await response.Content.ReadAsStringAsync();      
    var component = JsonObject.Parse(result);     
}

谁能让我知道我可以用什么代替计时器?

4

1 回答 1

3

System.Timers.Timer通常设置为在 ThreadPool 线程上引发事件。如果你现在使用它,你会想要使用新的ThreadPoolTimer类。

如果您想在 UI 线程上引发事件,您将需要 new DispatcherTimer,替代System.Windows.Forms.Timer.

编辑:您的评论表明您想使用 DispatcherTimer,但您遇到了代码问题。这是您在评论中得到的内容的直接翻译:

public void StartTimer(object o, RoutedEventArgs sender)
{ 
    this.timer = new DispatcherTimer();

    // this is an easier way to specify TimeSpan durations
    timer.Interval = TimeSpan.FromMilliseconds(100);

    // you don't need the delegate wrapper
    timer.Tick += checkJson_Tick;

    timer.Start();
}

void checkJson_Tick(object sender, EventArgs e)
{
    // ...
}
于 2013-05-06T02:29:08.110 回答