我想检查数据库中的所有数据,状态更改为“已报告”,在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();
}
答案 0 :(得分:0)
如果您需要以编程方式获取数据,我会执行以下操作:
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),然后发送一个电话给你的应用程序进行更新。 / p>