0

我有一个 WPF 数据网格,我需要每分钟更新一次。我添加了一个 DispatchTimer 来获取数据并更新我的数据网格的数据上下文。问题是数据似乎一直存在。首先,我认为这是我的列表,但我只是让列表运行而没有更新我的 dataContext 并且我没有看到正在使用的内存。

        DispatcherTimer dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval = new TimeSpan(0, 0, 1);

我将其设置为 1 秒进行测试。

    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        ObservableCollection<Technician> techData = LoadData();
        DG1.DataContext = null;
        DG1.DataContext = techData;
    }

...

    private ObservableCollection<Technician> LoadData()
    {
        ObservableCollection<Technician> techData = new ObservableCollection<Technician>();

        Uri uriGreenImage = new Uri("pack://application:,,,/Images/green.png");
        Uri uriRedImage = new Uri("pack://application:,,,/Images/red.png");

        // Connect to Database.
        Database db = new Database();

        string query = "SELECT * FROM dbo.StatusBoard ORDER BY dbo.StatusBoard.LastName";

        SqlDataReader reader = db.Query(query);

        while (reader.Read())
        {
            BitmapImage statusImage;

            switch(reader["Status"].ToString())
            {
                case "0":
                    statusImage = new BitmapImage(uriGreenImage);
                    break;
                case "1":
                    statusImage = new BitmapImage(uriRedImage);
                    break;
                default:
                    statusImage = new BitmapImage(uriRedImage);
                    break;
            }

            techData.Add(new Technician
            {
                FullName = reader["FirstName"].ToString() + " " + reader["LastName"].ToString(),
                Comments = reader["Comments"].ToString(),
                Status = statusImage,
                WatchingServiceDesk = (reader["WatchingServiceDesk"].ToString() == "1" ? true : false),
                Phone = reader["Phone"].ToString()
            });
        }

        return techData;
    }
4

0 回答 0