c#石英更新用户界面
我创建了一个小应用程序。我每5秒钟创建一个字符串和作业的可观察集合(石英),在集合中添加新项,但ui不更新。请帮忙c#石英更新用户界面,c#,wpf,quartz-scheduler,C#,Wpf,Quartz Scheduler,我创建了一个小应用程序。我每5秒钟创建一个字符串和作业的可观察集合(石英),在集合中添加新项,但ui不更新。请帮忙 public partial class MainWindow : Window { public ObservableCollection<string> Products { get; set; } //my logic..... public void UpdateCol() { Products.Add("
public partial class MainWindow : Window
{
public ObservableCollection<string> Products { get; set; }
//my logic.....
public void UpdateCol()
{
Products.Add("2");
}
}
public class Test:IJob
{
public void Execute(IJobExecutionContext context)
{
//How call method from UpdateCol from MainWindow????
}
}
公共部分类主窗口:窗口
{
公共可观测集合乘积{get;set;}
//我的逻辑。。。。。
公共void UpdateCol()
{
产品。添加(“2”);
}
}
公共类考试:IJob
{
public void Execute(IJobExecutionContext上下文)
{
//如何从主窗口从UpdateCol调用方法????
}
}
您应该在创建集合后首先调用BindingOperations.EnableCollectionsSynchronization,以便可以从后台线程安全地更新它(此解决方案仅适用于.NET 4.5+):
若我创建了一个窗口,那个么在另一个类(Test)中执行调用,我将获得关于线程sta的exeption
private object lock_ = new object();
public MainWindow()
{
Products = new ObservableCollection<string>();
BindingOperations.EnableCollectionSynchronization(Products, lock_);
}
public void Execute(IJobExecutionContext context)
{
window.Dispatcher.BeginInvoke(new Action(window.UpdateCol));
}