草庐IT

延迟任务

全部标签

c# - 延迟事件处理直到事件被触发

在C#中,延迟处理所有已知事件直到实体被完全修改的最佳方法是什么?例如,一个实体-MyEntity-具有属性ID、名称和描述...publicclassMyEntity{publicInt32ID{get;set;}publicStringName{get;set;}publicStringDescription{get;set;}}当修改每个属性时,每次修改都会触发一个事件。有时,ID是唯一被修改的属性,有时所有属性都被修改。我希望修改事件的注册监听器等待,直到“批处理”中被修改的所有属性都被修改。实现此目标的最佳方法是什么?在我看来,类似于UnitOfWork模式的东西,可以在调用

c# - 多 DPI 系统上的 VSTO 自定义任务 Pane 显示两次内容

我正在使用VSTO构建一个办公插件。在具有多个不同DPI设置的显示器的系统上,我的自定义任务Pane的内容在具有较高DPI设置的显示器上绘制两次:只有较小的版本才真正响应用户输入。较大的版本似乎只是一个放大的图像。我试过各种DPI相关设置,例如:AutoScaleMode在我的用户控件上。我尝试了所有选项,没有任何改变。使用SetProcessDpiAwareness将进程设置为DPI感知(或不感知)。我尝试了所有选项,没有任何改变。使用app.manifest并将dpiAware设置为true和false。没有变化。新的Web插件没有这个问题。此外,内部任务Pane没有此问题。这是一

c# - 计划任务或服务的容错和可靠性最佳实践

我一直在研究许多作为Windows服务或计划任务运行的应用程序。现在,我想确保这些应用程序具有容错性和可靠性。例如;我有一项每小时运行一次的服务。如果服务在操作或运行时崩溃,我希望应用程序在同一时期再次运行(这涉及几件事,包括数据处理事务),以避免数据丢失。此外,我希望程序能够详细报告错误。我的目标是避免数据丢失并且不落后于运行程序。我构建了一个类库,用户可以将其导入到项目中。图书馆应该保留程序运行实例的信息,即。程序读写运行间隔、运行状态等信息,这些数据存储在数据库中。我很好奇,是否有一些最佳实践可以使计划任务/Windows服务具有容错性和可靠性。编辑:我说的是在不同服务器上的独立

c# - 什么时候返回延迟的 IEnumerable<T> 是错误的形式

我很好奇是否有人对何时返回延迟的IEnumerable有任何经验法则或最佳实践或调用ToArray()在从函数返回之前在它上面。例如,作为API的使用者,我认为我更喜欢IEnumerableGetWidgets()这样的方法扔一个HttpException当我调用它而不是在枚举结果时抛出它。publicIEnumerableGetWidgets(IEnumarablewidgetIds){returnwidgetIds.Select(id=>GetWidgetFromWidgetWebService(id));} 最佳答案 我总是喜

c# - 从任务栏隐藏应用程序

我一直在努力从我的应用程序的任务栏中隐藏另一个应用程序。我一直在使用SetWindowLong函数以在extendedstyle上设置/删除WS_EX_APPWINDOW.我尝试过分别设置和删除属性,以及获取当前的WindowLong,然后将其删除/添加到那个属性中,如下所示:SetWindowLong(pMainWindow,GWL_EXSTYLE,GetWindowLong(pMainWindow)&WS_EX_APPWINDOW);并尝试像这样删除它:SetWindowLong(pMainWindow,GWL_EXSTYLE,GetWindowLong(pMainWindow)&

c# - 返回任务或等待和 ConfigureAwait(false)

假设有这样一个方法的服务库publicasyncTaskGetPersonAsync(Guidid){returnawaitGetFromDbAsync(id);}遵循SynchronizationContext的最佳实践更好用publicasyncTaskGetPersonAsync(Guidid){returnawaitGetFromDbAsync(id).ConfigureAwait(false);}但是当你只有一个操作时(我认为)最好直接返回任务。参见Attheendofanasyncmethod,shouldIreturnorawait?publicTaskGetPerson

c# - 在 .Net 4.0 中从 .Net 4.5 绑定(bind)的延迟属性

如何在.Net4.0中实现.Net4.5的延迟属性(描述here)?我知道我无法从BindingBase继承,因为ProvideValue是密封的。我可以实现MarkupExtension,但这意味着我现在必须重写BindingExtension的所有属性,还有其他方法吗? 最佳答案 最后,我决定使用组合将DelayedBinding实现为MarkupExtension。我遇到的唯一问题是如果IProvideValueTarget中的TargetProperty为null,DataTemplatesProvideValue应该返回此

C#任务多队列节流

我需要一个需要维护不同任务队列的环境,并且每个任务队列都有明确定义的并发线程数,可以为每个队列执行。像这样:队列1->3个线程;队列2->6个线程;任务系统的种类。我已经成功地使用普通的旧c#代码(又名System.Threading.Thread、锁和队列)自己实现了这一点,它可以正常工作1年以上。然而,我一直在阅读关于TaskFactory和TaskScheduler的奇迹的文章,关于.NET中内置类的可能性,但我没有找到一个例子来证明这一点。我想测试它并与我现在拥有的进行比较,看看它是否运行得更好,如果运行良好,则更换它。此外,我可以不必限制/设置每个队列的并行线程数,只要我能得

网络安全比赛A模块任务书

前言这是作者这几个月来的第一次更新文章,问就是太忙了,最近要去参加国赛,在此重新回来写文章,也不知道能写多久,就当练习了。一.A模块基础设施设置/安全加固A-1.登录加固1.密码策略a.最小密码长度不少于8个字符,将密码长度最小值的属性配置界面截图。练习用的WindowsServer2008,系统左下角开始>管理工具>本地安全策略>账户策略>密码策略>密码最小长度,如下图👇。b.密码策略必须同时满足大小写字母、数字、特殊字符,将密码必须符合复杂性要求的属性配置界面截图和上面一样的地方,如下图👇。2.登录策略a.在用户登录系统时,应该有“Forauthorizedusersonly”提示信息,将

c# - 延迟域事件的创建和调度

我一直在使用DomainEventspattern一段时间以来-它使我们能够在我们的领域层中封装尽可能多的行为,并为我们应用程序的其他部分提供一种很好的方式来订阅领域事件。目前我们正在使用一个静态类,我们的域对象可以调用它来引发事件:staticclassDomainEvents{publicstaticIEventDispatcherDispatcher{get;set;}publicstaticvoidRaise(TEvente){if(e!=null){Dispatcher.Dispatch(e);}}}如您所见,这只不过是IEventDispatcher的垫片。它实际上执行调度