Threading.Tasks 简单的使用

using Lemon.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Timers;
using System.Web;

namespace Lemon.Stats.Web.Service
{
    public class SynchCacheDataService
    {
        /// <summary>
        /// 定时器
        /// </summary>
        private static System.Timers.Timer TimerOne;

        public static void StartService()
        {
            TimerOne = new System.Timers.Timer();
            TimerOne.Interval = 1000;   //1分钟执行一次(毫秒单位)
            TimerOne.Elapsed += new ElapsedEventHandler(TimeUpdateDataTimer_Elapsed);
            TimerOne.Enabled = true;
        }

        /// <summary>
        /// 定时器执行事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private static void TimeUpdateDataTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            SynchCacheData();
        }

        /// <summary>
        /// 同步缓存数据事件
        /// </summary>
        /// <returns></returns>
        public static Task<int> SynchCacheData()
        {
            return Task.Run(() =>
            {
                return SyncHelper.SyncCacheData();
            });
        }
    }
}

调用方式:

using Lemon.Stats.Web.Service;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Security;
using System.Web.SessionState;

namespace Lemon.Stats.Web
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
            GlobalConfiguration.Configure(FormatConfig.Register);

            //启动同步缓存数据
            SynchCacheDataService.StartService();
        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}
时间: 2024-10-01 03:14:19

Threading.Tasks 简单的使用的相关文章

vs2013c#测试using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1_CXY { class Program { stati

首先安装Unit Test Generator.方法为:工具->扩展和更新->联机->搜索“图标为装有蓝色液体的小试管.Unit Test Generator”, 编写代码,生成一个新的类,编写构造函数 与 add()函数.代码如下. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Co

.Net多线程编程—System.Threading.Tasks.Parallel

System.Threading.Tasks.Parallel类提供了Parallel.Invoke,Parallel.For,Parallel.ForEach这三个静态方法. 1 Parallel.Invoke 尽可能并行执行所提供的每个操作,除非用户取消了操作. 方法: 1)public static void Invoke(params Action[] actions); 2)public static void Invoke(ParallelOptions parallelOption

System.Threading.Tasks.Task引起的IIS应用程序池崩溃

问题现象 IIS应用程序池崩溃(Crash)的特征如下: 1. 从客户端看,浏览器一直处于连接状态,Web服务器无响应. 2. 从服务器端看(Windows Server 2008 + IIS 7.0),在事件日志中会出现Event ID为5010的错误: A process serving application pool 'q.cnblogs.com' failed to respond to a ping. The process id was '20080'. 这个错误的意思是:IIS检

Threading.Tasks.Task多线程 静态全局变量(字典) --只为了记录

--------------------------------------------------------------后台代码------------------------------------------   public JsonResult ImportPDF(Int64 id)        {            try            {                Guid currentGuid = Guid.NewGuid();               

System.Threading.Tasks.Task引起的IIS应用池崩溃

接口服务运行一段时间后,IIS应用池就会突然挂掉,事件查看日志,会有事件日志Event ID为5011的错误 为应用程序池"PokeIn"提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误.该进程 ID 为"2268".数据字段包含错误号. 最后直接程序池直接被禁用 应用程序池"PokeIn"将被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误. 查看管理事件 Applicat

System.Threading.Tasks.Task 任务引起的IIS应用程序池崩溃

转载:http://www.cnblogs.com/aaa6818162/p/4421305.html 问题现象 IIS应用程序池崩溃(Crash)的特征如下: 1. 从客户端看,浏览器一直处于连接状态,Web服务器无响应. 2. 从服务器端看(Windows Server 2008 + IIS 7.0),在事件日志中会出现Event ID为5010的错误: A process serving application pool 'q.cnblogs.com' failed to respond

what&#39;s problem will you face in the multiple threading tasks

The most common concurrency problem I've seen, is not realizing that a field written by one thread is not guaranteed to be seen by a different thread. A common application of this: class MyThread extends Thread { private boolean stop = false; public

Python之threading模块简单使用

下面的代码来自<Python核心编程>(第二版)一书. threading模块对象 说明 Thread 表示一个线程的执行的对象 Lock 锁原语对象(跟thread模块里的锁原语对象相同) RLock 可重入锁对象.使单线程可以再次获得已经获得了的锁(递归锁定) Condition 条件变量对象能让一个线程停下来,等待其他线程满足了某个"条件".如,状态的改变或值得改变 Event 通用的条件变量,多个线程可以等待某个事件的发生,在事件发生后,所有的线程都会被激活 Sem

python之threading模块简单讲解和实例演示

import threading 在处理一些程序时为了节约时间,可以使用多线程的方式, 让其并发去执行,从而节约时间, (注意python其实是伪多线程,其实是以我们感觉不到的速度每行代码都按照相同时间执行) Lock 当多线程同时对一个变量进行修改操作的时候,那么可能会出现混乱, 因为其是并发(算是吧)而行, (所以当两个赋值时间相对接近时那么其容易出现混乱) 所以我们得创建锁, 让其上一个线程赋值结束, 下一个赋值再继续 threading.Lock() 创建锁 是可用的最低级的同步指令.