我需要编写一个工具来按照用户可配置的时间表运行重复性任务。我将使用C#3.5编写它,它将在XP、Windows7或WindowsServer2008上运行。这些任务大约需要20分钟才能完成。用户可能希望设置多种配置:例如,每日、每周和每月周期。使用任务计划程序不是一种选择。用户将通过类似于Outlook的定期约会对话框的界面安排重复。一旦他们设置了时间表,他们就会启动它,它应该位于系统托盘中并在指定的时间开始它的任务,然后发送邮件表明它已经完成。最好的编写方式是什么,这样它才不会耗尽资源、锁定主机或出现其他不当行为? 最佳答案 您能
我有一个正在运行的MVC3c#网站,它从网络服务中提取记录。随着它从web服务获取的数据集变得越来越大,我正在寻找一种方法来创建它的缓存,而不是在没有当前缓存的情况下由第一个访问该站点的用户触发,而是按每日计划(如cron作业、计划任务等)。我应该怎么做?我是否需要某种触发器库,如Quartz.net?(我宁愿使用更简单的解决方案)现在我的Controller中有:privateListGetSummaries(){//getsummariesfromcacheifavailableListsummaries=(List)HttpContext.Cache["SummariesCach
我正在从.Net3.5Framework客户端调用2个Web服务(服务器是更现代的.NETFramework服务器:4.6)。分开我没有遇到任何问题,但是如果我按照下面显示的顺序调用方法,我会遇到一个问题,即永远不会输入服务器上的VerifyFile方法,我会立即得到一个服务器已在客户端上提交协议(protocol)违规部分=ResponseStatusLine错误。更准确地说:服务器在事件中注册VerifyFile请求,但直到6分钟后才输入实际代码(并立即返回导致上述错误的内容)。经过大量测试后,我可以将其归结为第一种方法“DownloadFile”,这是问题的原因。而且总是当我从它
在下面的程序中,我希望任务得到GC,但它没有。我使用了一个内存分析器,它显示CancellationTokenSource持有对它的引用,即使任务显然处于最终状态。如果我删除TaskContinuationOptions.OnlyOnRanToCompletion,一切都会按预期进行。为什么会发生这种情况,我该如何预防?staticvoidMain(){varcts=newCancellationTokenSource();varweakTask=Start(cts);GC.Collect();GC.WaitForPendingFinalizers();GC.Collect();Con
我正在寻找一个函数来接受任何产生IEnumerable的任务.为了说明,请考虑以下函数签名。voidDoWork(Task>task){}现在,我想按如下方式调用此方法:Tasktask=Task.FromResult(new[]{1,2,3});DoWork(task);显然,这行不通,因为两个Task类型不相同,并且任务不存在协方差。但是,我想知道是否有一些聪明的技巧可以让它发挥作用,灵感来自以下示例。asyncTask>GetTask(){returnawaitTask.FromResult(newint[]{1,2,3});}在这里,await正在使用内联任务的结果有效地创建一
我有一个方法publicTaskDoSomeWorkOnARemoteMachine()它非常具有描述性,通过以下方式在远程机器上执行一些工作:在消息总线上排队消息,表明工作应该完成远程代理接收消息并执行工作工作完成,代理在消息总线上排队消息以表明工作已完成调用工作的应用程序接收工作完成的消息我使用Task的原因是因为第一个Task用于消息的排队;而内部Task当远程机器上的工作完成时(即收到来自代理的消息时),就完成了。远程代理在工作执行期间捕获的任何异常都与完成消息一起传递,并在内部Task时重新抛出。完成。要调用此方法,我使用:awaitawaitDoSomeWorkOnARem
如果两个线程同时读取这个属性会怎样?publicstaticHugeTypeHugeType{get{if(tenderCache==null){tenderCache=Config.Get("HugeType",null);}returntenderCache;}}我的对象是只读的,如果创建两个实例并不重要。在任何情况下我都应该加锁吗? 最佳答案 因为没有同步,初始化方法可能会被调用很多次,即使其他线程已经完全完成初始化(由于缺少内存屏障)也可能如此。如果您不关心多次执行初始化操作并且无论调用多少次它总是返回相同的正确值,即使同时
我想使用Google日历API在Google日历中创建任务。使用C#。寻找一些示例代码。 最佳答案 遗憾的是,Google日历中的任务功能没有API。虽然日历数据API非常广泛,但任务团队尚未发布API。包括您在内的许多人都请求过这样的API,但Google尚未采取任何措施来填补这一空白。DataAPI组上有很多关于这个的帖子,例如thisone.但是,Google可能很快就会发布一个。在那之前,如果你真的需要使用任务,你将不得不进行屏幕抓取。换句话说,您必须研究GCalendarUI的工作原理并模拟与之交互。有些人可能已经解决了这
我有一个WinRT应用程序,它有一个后台任务负责调用API来检索它需要更新自身的数据。但是,我遇到了一个问题;在后台任务之外运行时,调用API的请求可以完美运行。在后台任务中,它失败了,并且还隐藏了任何可能有助于指出问题的异常。我通过调试器跟踪了这个问题来跟踪问题点,并验证了执行停止在GetAsync上。(我传递的URL有效,不到一秒URL响应)varclient=newHttpClient("http://www.some-base-url.com/");try{response=awaitclient.GetAsync("valid-url");//NevergetshereDeb
我已经安排了运行SSIS包的sql代理任务。我希望能够从.net运行SSIS包。有没有办法直接运行SSIS包或至少运行SQL代理任务,后者又会运行SSIS包。如果对用C#编写的.net3.5网络应用有帮助的话谢谢! 最佳答案 可用于运行SSIS包的选项是-使用SSIS对象模型以编程方式运行包。联机丛书中对此进行了详细讨论here.一个例子:usingSystem;usingMicrosoft.SqlServer.Dts.Runtime;namespaceRunFromClientAppCS{classProgram{staticvo