如何每 2 分钟检查一次数据网格 wpf 中的报告检查?

How to check every 2 minutes for report checking in datagrid wpf?

我想检查数据库中的所有数据,状态更改为"Reported"自动刷新到 wpf datagrid

这里正在使用下面的代码,请告诉我如何在线程中给出它以每 2 分钟自动刷新一次。 如何为自动刷新检查提供以下代码:-

 public void automaticreport(object m)
    {            
        foreach (var autsdyid in LoadStudyIdentifiers())
        {
            if (!this.reportchk)
            {
                Reportnew cf = new Reportnew();
                ThreadPool.QueueUserWorkItem((WaitCallback)(o => cf.ReportRetrive(this, autsdyid, true)));
            }
            else
            {
                int num = (int)System.Windows.Forms.MessageBox.Show("Reports checking in progress, Please wait sometime and try again later", "OPTICS", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }
    }

    private string[] LoadStudyIdentifiers()
    {
        var results = new List<string>();
        using (var con = new SqlConnection(constr))
        {
            con.Open();
            var autoquery = "Select StudyUID From StudyTable Where status='2'";

            using (var cmd = new SqlCommand(autoquery, con))
            {
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    results.Add(rdr.GetString(rdr.GetOrdinal("StudyUID")));
                }
            }

        }

        return results.ToArray();
    }

如果您需要以编程方式获取数据,我会这样做:

async void Main()
{
    Foo f = new Foo();
    Task s = await f.Bar(); 
    Console.WriteLine("Done");
}

public class Foo
{
    public Foo()
    {
    }
    //recursive tail function
    public async Task<Task> Bar()
    {
        //enter your code here
        doSomething();
        //Change this to what time you desire
        await Task.Delay(1000);
        return Bar();
    }
}

你也可以 运行 它作为一个同步函数,带有一个简单的尾递归,它会锁定资源,你必须考虑到如果你不刷新流和处理这可能会导致问题正确使用不同类型的对象。

比较安全的路线:

我的另一个想法是安排(计划任务)一个收集数据并将其保存到文档中的小工人(json、csv、xml w/e)然后调用您的应用进行更新。