Вызов функции по таймеру из контроллера в файле 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); } }
Что я уже пробовал:
Единственный способ, который я нашел в интернете, - это позвонить ему из
Global.asax.cs
файл, но он не работает.