私はそれにtelerik gridviewを持つウィンドウを持っており、このグリッドビューを1分ごとに更新します。私はリフレッシュ方法を持っていて、1分ごとにそれを呼びます。DataGridを更新するためのスレッディング
私の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();
}
}
}
おかげ
私はリフレッシュ方法を投稿します。 –