最好的方法“更少的时间”使用实体框架插入批量插入,不包括两个相干表的重复记录?-英雄云拓展知识分享
259
2024-01-22
我至今为止正在使用ReactiveUI在C#中构造一个利用程序,其中包括许多视野/视野模式。这些视野模型中的一些以预设间隔履行网络要求。这些网络要求可能随即失败。我实行了以下:
public ReactiveCommand<Unit, IReactiveList<IJob>> RefreshJobList { get; }public Interaction<Exception, Unit> RefreshError { get; } = new Interaction<Exception, Unit>();

...
RefreshJobList = ReactiveCommand.CreateFromTask(() => DoNetworkRequest());
RefreshJobList.ThrownExceptions.Subscribe(ex =>
{
log.Error("Failed to retrieve job list from server.", ex);
RefreshError.Handle(ex).Subscribe();
});
Observable.Interval(TimeSpan.FromMilliseconds(300)).Select(x => Unit.Default).InvokeCommand(RefreshJobList);
在相应的视野中,我处理异常以下:
this.WhenActivated(d => d(this.ViewModel.RefreshError.RegisterHandler(interaction =>
{
MessageBox.Show("Failed to load joblist.", "Error", MessageBoxButton.OK);
interaction.SetOutput(new Unit());
})
));
这可以正常工作,除非ViewModel与视野不关联。我的利用程序使用选项卡,当用户切换到其他选项卡时,上一个视野将被破坏。这使ViewModel正在运行,仍在提出要求,没有视野。然后,产生毛病 RefreshJobList
,没有处理程序与 RefreshError
,reactiveui抛出 UnhandledInteractionError
我的利用程序崩溃了。
我不肯定如何干净地处理。我的第一个想法是暂停ViewModel,直到连接视野为止,这也能够节省网络流量。但是,我仿佛没法检查是不是将视野附加到ViewModel上。有任何想法吗?
解决方案的关键是使用 WhenActivated
, 受供于 ISupportsActivation
在ViewModel上。
我现在正在使用De ViewModel中的以下代码:
public class ViewModel : ReactiveObject, ISupportsActivationpublic ViewModelActivator Activator { get; } = new ViewModelActivator();
public ReactiveCommand<Unit, IReactiveList<IJob>> RefreshJobList { get; }
public Interaction<Exception, Unit> RefreshError { get; } = new Interaction<Exception, Unit>();
...
public ViewModel(){
RefreshJobList = ReactiveCommand.CreateFromTask(() => DoNetworkRequest());
RefreshJobList.ThrownExceptions.Subscribe(ex =>
{
log.Error("Failed to retrieve job list from server.", ex);
RefreshError.Handle(ex).Subscribe();
});
this.WhenActivated(d => d(
Observable.Interval(TimeSpan.FromMilliseconds(300)).Select(x => Unit.Default).InvokeCommand(RefreshJobList)
));
}
}
这很好。
免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。