如何解决从global.asax.cs文件中的控制器在计时器上调用函数 呼叫者被叫方
我是C#编程的新手,无法弄清楚如何每小时触发一次函数。
该功能位于我的一个控制器中。
我在互联网上找到的唯一方法是从Global.asax.cs
文件中调用它,但是它不起作用。
有人可以帮我吗?
呼叫者
public class WebApiApplication : System.Web.HttpApplication
{
private static Timer timer;
protected void Application_Start()
{
// AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//WebApiConfig.Register(GlobalConfiguration.Configuration);
timer = new System.Timers.Timer(10000);
var SSSData = new SSSData();
timer.Elapsed += new ElapsedEventHandler(RedirectToAction("DoPushSend","Notification",new
{
dataSSS = SSSData
}));
timer.Interval = 3600000;
timer.Enabled = true;
}
}
被叫方
public static void DoPushSend(SSSData dataSSS)
{
client.BaseAddress = new Uri("sample.com/3/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
try
{
string url = "sample.com/device/";
WebClient client = new WebClient();
string content = client.DownloadString(url);
List<string> expoTokens = JsonConvert.DeserializeObject<List<string>>(content);
var expoSDKClient = new PushApiClient();
var pushTicketReq = new PushTicketRequest()
{
PushTo = expoTokens,PushBadgeCount = 7,PushBody = dataSSS.DESCRIPTION + "[<$>]" + dataSSS.LAT + "[<$>]" + dataSSS.LON + "[<$>]" + dataSSS.MAXRADIUS
};
int nowTimeTo = DateTime.Compare(DateTime.Now,dataSSS.TIMETO);
int nowTimeFrom = DateTime.Compare(DateTime.Now,dataSSS.TIMEFROM);
if (nowTimeFrom >= 0)
{
if (nowTimeTo <= 0)
{
var result = expoSDKClient.PushSendAsync(pushTicketReq).GetAwaiter().GetResult();
}
}
}
catch (Exception e)
{
SSS_Common.Helpers.ErrorHelper.WriteToLog("Notification : ",e);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。