草庐IT

分布式任务

全部标签

c# - 安排每天在特定时间刷新 HttpContext.Cache 的任务

我有一个正在运行的MVC3c#网站,它从网络服务中提取记录。随着它从web服务获取的数据集变得越来越大,我正在寻找一种方法来创建它的缓存,而不是在没有当前缓存的情况下由第一个访问该站点的用户触发,而是按每日计划(如cron作业、计划任务等)。我应该怎么做?我是否需要某种触发器库,如Quartz.net?(我宁愿使用更简单的解决方案)现在我的Controller中有:privateListGetSummaries(){//getsummariesfromcacheifavailableListsummaries=(List)HttpContext.Cache["SummariesCach

c# - 使用 transactionscope 时停止事务升级为分布式的推荐做法

使用TransactionScope对象设置不需要跨函数调用传递的隐式事务非常棒!但是,如果一个连接打开而另一个连接已经打开,事务协调器会静默升级要分发的事务(需要运行MSDTC服务并占用更多资源和时间)。所以,这很好:using(varts=newTransactionScope()){using(varc=DatabaseManager.GetOpenConnection()){//DoWork}using(varc=DatabaseManager.GetOpenConnection()){//Domoreworkinsametransactionusingdifferentcon

c# - 任务未被垃圾收集

在下面的程序中,我希望任务得到GC,但它没有。我使用了一个内存分析器,它显示CancellationTokenSource持有对它的引用,即使任务显然处于最终状态。如果我删除TaskContinuationOptions.OnlyOnRanToCompletion,一切都会按预期进行。为什么会发生这种情况,我该如何预防?staticvoidMain(){varcts=newCancellationTokenSource();varweakTask=Start(cts);GC.Collect();GC.WaitForPendingFinalizers();GC.Collect();Con

c# - 分布式 key 生成是否有 GUID 替代方案?

我的情况是:我有许多客户端应用程序,它们使用本地数据库(MSSQL、MSAccess-抱歉,这是企业系统,我必须支持旧版...)我对客户的趋势一无所知-现在大约是10,但可能一年约100个。这些表中的数据到达我的中央服务器并放入一个公用表中有时现有(客户端)数据会更改-我必须执行更新/删除操作我不想使用GUID(.NET类型System.Guid)-很难简单地在MSAccess上实现和支持。此外,它是notgoodforperformance我需要对该公用表进行快速搜索,因此最好使用int或longint作为PK所以,我想要:避免碰撞的独特之处(它将用作PK)它应该是int或longi

c# - 如何定义接受任何生成 IEnumerable<T> 的任务的函数?

我正在寻找一个函数来接受任何产生IEnumerable的任务.为了说明,请考虑以下函数签名。voidDoWork(Task>task){}现在,我想按如下方式调用此方法:Tasktask=Task.FromResult(new[]{1,2,3});DoWork(task);显然,这行不通,因为两个Task类型不相同,并且任务不存在协方差。但是,我想知道是否有一些聪明的技巧可以让它发挥作用,灵感来自以下示例。asyncTask>GetTask(){returnawaitTask.FromResult(newint[]{1,2,3});}在这里,await正在使用内联任务的结果有效地创建一

c# - C# 中分形 Perlin 噪声函数的均匀分布

我的Perlin噪声函数(以0.75持久性将3D单纯形的6个Octave相加)生成double的二维数组。这些数字每个都归一化为[-1,1],均值为0。我限制它们以避免异常,我认为这是由于浮点精度问题,但我相当确定我的比例因子是在理想情况下足以将噪声输出限制在这个邻域内。无论如何,这就是所有细节。重点是,这是一个256×256的噪声数组:正常拟合的直方图如下所示:Matlab的lillietest是一个应用Lilliefors检验以确定一组数字是否来自正态分布的函数。我的结果一再是1,这意味着这些数字不是正态分布的。我想要一个函数f(x),这样当应用于我的噪声函数的值列表时,结果呈现均

c# - 预留实例模式下 Azure 网站的新 Azure 分布式缓存

WindowsAzure(6月7日宣布)的其他重要新功能似乎缺少的是能够在预留实例模式下为网站集群的预留实例定义分布式缓存。到目前为止,似乎只能为独立的webroles或worker角色创建分布式缓存。有谁知道解决方法或知道这是否即将发生?我问这个问题的原因是因为它迫使我创建一个专门用于缓存的worker角色,而且由于我受到成本的限制,我负担不起另外三个用于缓存的实例。这给我留下了一个不容错的缓存服务,而实际上我托管网站的三个Webrole将是a)容错和b)可以为分布式缓存贡献足够的内存,这样我就可以在没有单点的情况下获得更大的缓存与单个缓存工作角色一样失败。

c# - 有没有办法知道是否正在等待任务?

我有一个方法publicTaskDoSomeWorkOnARemoteMachine()它非常具有描述性,通过以下方式在远程机器上执行一些工作:在消息总线上排队消息,表明工作应该完成远程代理接收消息并执行工作工作完成,代理在消息总线上排队消息以表明工作已完成调用工作的应用程序接收工作完成的消息我使用Task的原因是因为第一个Task用于消息的排队;而内部Task当远程机器上的工作完成时(即收到来自代理的消息时),就完成了。远程代理在工作执行期间捕获的任何异常都与完成消息一起传递,并在内部Task时重新抛出。完成。要调用此方法,我使用:awaitawaitDoSomeWorkOnARem

c# - 如何使用 Google Calendar API 创建任务

我想使用Google日历API在Google日历中创建任务。使用C#。寻找一些示例代码。 最佳答案 遗憾的是,Google日历中的任务功能没有API。虽然日历数据API非常广泛,但任务团队尚未发布API。包括您在内的许多人都请求过这样的API,但Google尚未采取任何措施来填补这一空白。DataAPI组上有很多关于这个的帖子,例如thisone.但是,Google可能很快就会发布一个。在那之前,如果你真的需要使用任务,你将不得不进行屏幕抓取。换句话说,您必须研究GCalendarUI的工作原理并模拟与之交互。有些人可能已经解决了这

c# - HttpClient GetAsync 在 Windows 8 的后台任务中失败

我有一个WinRT应用程序,它有一个后台任务负责调用API来检索它需要更新自身的数据。但是,我遇到了一个问题;在后台任务之外运行时,调用API的请求可以完美运行。在后台任务中,它失败了,并且还隐藏了任何可能有助于指出问题的异常。我通过调试器跟踪了这个问题来跟踪问题点,并验证了执行停止在GetAsync上。(我传递的URL有效,不到一秒URL响应)varclient=newHttpClient("http://www.some-base-url.com/");try{response=awaitclient.GetAsync("valid-url");//NevergetshereDeb