草庐IT

c# - 安排 Web Api 方法按设定的时间间隔运行

在我当前的项目中,需要安排一种方法以设定的时间间隔运行,例如每周一次,目前这是通过Windows服务创建HttpClient并点击所需的Controller方法来完成的。我想知道这是否可以在WebApi项目本身中自动化,而不是使用外部服务。到目前为止,我还没有找到有关执行此操作的任何文档。很抱歉没有代码示例可以工作,因为我还没有找到一个基础。 最佳答案 如果您需要每周安排一个后台任务运行,您可以使用FluentScheduler(NuGetlink)为您运行。你可以这样做:publicclassWeeklyRegistry:Regi

c# - 舍入时间跨度为 15 分钟间隔

我的代码中有一个属性,用户可以在其中以HH:mm格式输入时间跨度,例如10:3210:4415:45我想在我的属性(property)中四舍五入到最近的15分钟,但我这里没有日期时间。我只需要使用Timespan即可10:32to10:3010:44to10:4515:45to15:4501:02to01:0002:11to02:1503:22to03:1523:52to00:00尝试了所有这些解决方案,但它们涉及到日期时间HowcanIroundupthetimetothenearestXminutes?IsthereasimplefunctionforroundingaDateTi

c# - DispatcherTimer 应用间隔并立即执行

基本上,当我们应用某个时间间隔(即5秒)时,我们必须等待它。是否可以应用间隔并立即执行计时器而不等待5秒?(我指的是间隔时间)。有什么线索吗?谢谢!!publicpartialclassMainWindow:Window{DispatcherTimertimer=newDispatcherTimer();publicMainWindow(){InitializeComponent();timer.Tick+=newEventHandler(timer_Tick);this.Loaded+=newRoutedEventHandler(MainWindow_Loaded);}voidtim

c# - 一种以均匀间隔推送缓冲事件的方法

我想要实现的是缓冲来自某些IObservable的传入事件(它们是突发的)并进一步释放它们,但是一个接一个,以均匀的间隔。像这样:-oo-ooo-oo------------------oooo-oo-o-------------->-o--o--o--o--o--o--o--------o--o--o--o--o--o--o---->因为我对Rx很陌生,所以我不确定是否已经有一个Subject或一个运算符可以做到这一点。也许可以通过组合来完成?更新:感谢RichardSzalay为了指出Drain运算符,我找到了另一个examplebyJamesMilesDrain运算符的使用情况。

C# 计时器在它们的间隔时间之前被触发

我们在从Windows服务使用System.Threading.Timer(.NET2.0)时遇到以下问题。大约有12种不同的计时器对象..每个计时器都有到期时间和间隔。这是正确设置的。据观察,在3到4小时后,计时器在它们的间隔结束之前开始发出信号。例如,如果计时器应该在4:59:59发出信号,它会在4:59:52发出信号,即提前7秒。谁能告诉我这种行为的原因是什么以及解决方案是什么?谢谢,斯瓦特语 最佳答案 好问题...原因如下:对于计算机来说,“计时”是一件棘手的事情……您永远不能依赖“间隔”来做到完美。有些计算机只会每14到1

c# - 从多变量时间序列间隔中检测罕见事件

给定传感器状态间隔的时间序列,我如何实现一个分类器,该分类器从监督训练数据中学习以根据状态间隔序列检测事件?为了简化问题,传感器状态被简化为true或false。更新:我找到了thispaper(PDF)关于时间间隔的挖掘序列,它解决了类似的问题。Anotherpaper(GoogleDocs)关于在多变量时间序列中挖掘层次时间模式采用了一种新颖的方法,但处理的是层次数据。示例训练数据以下数据是一个事件的训练示例,表示为随时间变化的图表,其中/¯¯¯\代表一个true状态间隔和\___/传感器的false状态间隔。Sensor|SensorStateovertime|0....5...

c# - 如果未返回,则在间隔后终止线程

我有一个线程可以从网络或串行端口获取一些数据。如果在5秒内没有收到数据,线程必须终止(或返回false)。换句话说,如果线程运行时间超过5秒,它必须停止。我正在用C#编写,但任何.NET语言都可以。 最佳答案 有两种方法:1。封装超时从网络或串口读取数据的线程可以测量从它开始时起耗时,等待数据的时间不超过剩余时间。网络通信API通常提供为操作指定超时的方法。因此,通过执行简单的DateTime算法,您可以将超时管理封装在工作线程中。2。外部超时使用另一个线程(或者如果可行的话在主线程中执行)等待工作线程在特定时间限制内完成,如果没有

c# - 如何在特定时间间隔后运行方法?

很清楚:例如,假设我的表单中有一个按钮。当用户点击按钮时,一些void方法应该在30秒后运行。会有一个void方法DoAfterDelay接受两个输入参数。第一个是做的方法(使用委托(delegate)),另一个是时间间隔。所以我会:publicdelegatevoidIVoidDelegate();staticvoidDoAfterDelay(IVoidDelegateTheMethod,TimeSpanInterval){//***Somecodethatwillpausetheprocessfor"Interval".TheMethod();}因此,我只需要一段代码来将进程暂停特

c# - 以指定的时间间隔定期运行异步方法

我需要从C#网络应用程序向服务发布一些数据。数据本身是在用户使用应用程序时收集的(一种使用统计信息)。我不想在每个用户的请求期间向服务发送数据,我宁愿在应用程序中收集数据,然后在单独的线程中的单个请求中发送所有数据,这不满足用户请求(我的意思是用户不必等待服务处理请求)。为此,我需要一种JS的setInterval模拟-每X秒启动一次函数以将所有收集的数据刷新到服务。我发现Timer类提供了一些类似的(Elapsed事件)。但是,这只允许运行该方法一次,但这不是什么大问题。它的主要困难在于它需要签名voidMethodName(objecte,ElapsedEventArgsargs)

c# - 最大定时器间隔

定时器的最大间隔为2,147,483,647。大约25天。但在我的要求中,我需要计时器等待30天。我该如何解决?请帮忙。 最佳答案 为此使用System.Threading.Timer。有些构造函数采用long、uint或TimeSpan而不是的int截止时间。任何这些都可以让您设置30天的期限。更新:这是最简单的方法:System.Threading.Timer_timer;publicvoidStart30DayTimer(){TimeSpanspan=newTimeSpan(30,0,0,0);TimeSpandisableP