【发布时间】:2015-08-08 08:03:31
【问题描述】:
我需要从 C# Web 应用程序向服务发布一些数据。数据本身是在用户使用应用程序时收集的(一种使用情况统计)。我不想在每个用户的请求期间向服务发送数据,我宁愿在应用程序中收集数据,然后在一个单独的线程中的单个请求中发送所有数据,这不服务于用户的请求(我的意思是用户不必等待服务处理请求)。为此,我需要一种 JS 的 setInterval 模拟 - 每 X 秒启动该函数以将所有收集到的数据刷新到服务。
我发现Timer 类提供了一些类似的(Elapsed 事件)。但是,这允许该方法只运行一次,但这不是一个大问题。它的主要困难是它需要签名
void MethodName(object e, ElapsedEventArgs args)
虽然我想启动异步方法,但它会调用网络服务(输入参数并不重要):
async Task MethodName(object e, ElapsedEventArgs args)
谁能建议如何解决所描述的任务?任何提示表示赞赏。
【问题讨论】:
-
如果
Timer不想与您合作“AutoReset - 获取或设置一个值,该值指示Timer是否应该在每次指定的时间间隔过后或仅在第一次之后引发Elapsed事件过去了。”因为您拒绝阅读您提供的链接而不是运气不好...... :) 旁注 - 如果您需要可靠的间隔/避免流程循环,通常最好使用外部通知 - “bing.com/search?q=asp.net+repeating+task”应该给你一些信息(或“ASP.Net 后台任务”)。 -
@AlexeiLevenkov 不错的嘲讽。感谢您的提示,下次会更仔细地探索。但是,它并没有解决主要问题。
-
因为它没有解决主要问题,所以它是一个评论...... i3arnon 的回答为您提供了如何以火和忘记的方式调用异步的链接(也称为“从事件处理程序调用异步方法”) ...
标签: c# asp.net .net multithreading async-await