我有一個窗口,裏面有一個telerik gridview,我每1分鐘更新一次gridview。我有一個刷新方法,每隔1分鐘我就會調用它。線程更新數據網格
我不能使用BackgroundWorker,因爲我的CollectionViewSource在UI線程中,BackgroundWorker無法使用它。我的問題是我怎麼能從另一個線程調用這個刷新方法?
地方我看到這個示例代碼:
Application.Current.Dispatcher.BeginInvoke(new Action(() => this.Refresh()));
這是我使用Refresh_Executed上面的代碼真正的方法是什麼? 請幫助我。
這是我的刷新方法:
public ObservableCollection<RequestView> AllRequestsData { get; set; }
private void Refresh()
{
using (ArchiveEntities db = new ArchiveEntities())
{
var data = db.RequestSyncs.Where(x => x.UserId == null);
if (data.Any())
{
string IdList = String.Join(",", data.Where(x => x.IsNew).Select(x => x.RequestId));
if (!String.IsNullOrWhiteSpace(IdList))
{
foreach (var item in db.RequestViews.Where("it.id in {" + IdList + "}"))
{
this.AllRequestsData.Add(item);
}
}
foreach (var item in data.Where(x => x.IsDeleted))
{
RequestView rv = this.AllRequestsData.Where(x => x.Id == item.RequestId).SingleOrDefault();
if (rv != null)
{
this.AllRequestsData.Remove(rv);
}
}
foreach (var item in data)
{
db.RequestSyncs.DeleteObject(item);
}
db.SaveChanges();
}
}
}
感謝
我發佈我的刷新方法。 –