问题描述
我是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 (将#修改为@)