将新计时器附加到每个对象

时间:2015-11-11 08:40:41

标签: c# wpf timer refresh

我正在使用WPF并创建了一个Window,其中包含有关计算机的信息。 它存储信息,如网络连接,IP,子网掩码,网络设备和其他东西。

要跟踪系统中的更改,我想在对象上添加一个计时器来刷新自己。我不想刷新孔形式,因为我有HttpWebRequest个,它会冻结程序几秒钟。它应该更容易看到变化并突出显示它们。

例如:

StComputerInf.Children.Add(new Label { Content = "2. Domain: \t\t" + System.Environment.UserDomainName });

我想在这里添加一个计时器来刷新自己。

对于TreeViewItem中的每个TreeView

public TreeView CreatTVConnection()
    {
        List<CAdapter> LAdapter = new List<CAdapter>();
        List<TreeViewItem> lConnectedDevices = new List<TreeViewItem>();
        List<TreeViewItem> lDisconnectedDevices = new List<TreeViewItem>();
        LAdapter = ReadAdapter();
        TreeView tv_Adapter = new TreeView();
        tv_Adapter.Name = "Adapter";
        tv_Adapter.Background = System.Windows.Media.Brushes.Transparent;
        tv_Adapter.BorderThickness = new Thickness(0);
        TreeViewItem Connected = new TreeViewItem();
        TreeViewItem Disconnected = new TreeViewItem();
        lConnectedDevices = LoadTV(true, LAdapter);
        if (lConnectedDevices.Count > 0)
        {
            Connected.Header = "Connected:";
            Connected.FontWeight = FontWeights.Bold;
            Connected.Foreground = System.Windows.Media.Brushes.Green;
            Connected.Name = "Connected";

            foreach (TreeViewItem tvi in lConnectedDevices)
            {
                tvi.FontWeight = FontWeights.Normal;
                Connected.Items.Add(tvi);
            }
        }
        ....

有没有办法查看对象是否已更改?所以我可以突出显示受影响的对象?

1 个答案:

答案 0 :(得分:0)

使用工厂创建对象。 因此,对于标签示例,您可以使用类似的内容 LabelFactory.Create(any useful parameters here)并且作为该方法的一部分,您可以包含计时器等。

另外,请使用async / await来更新表单,以便更新它们而不冻结表单。一旦您对模式感到满意,您就应该能够消除对计时器的依赖。