最近在做一个项目,需要每天定时获取数据。我有一张广告表(有广告主ID),有一张广告系列表(根据广告主ID获取数据)。其中广告表有4000多个数据,根据广告主ID获取到的系列数据大概百万条。需求:我想每天晚上24:00定时根据广告主ID获取广告系列的数据保存到数据库。应该怎么做?下面是我写的代码./// <summary>
/// 服务启动的操作
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
StartGetData();
}/// <summary>
/// 服务启动,开始获取数据
/// </summary>
private void StartGetData()
{
try
{
//通过ThreadStart委托告诉子线程将执行什么方法。(这里执行获取广告主消耗数据的方法)
ThreadAPI = new Thread(new ThreadStart(GetAdvertiserInfo));
ThreadAPI.Start();//启动新线程
System.Diagnostics.Trace.Write("线程任务开始");
}
catch (Exception ex)
{
Logger.Error("获取广告主消耗数据的方法错误!", ex);
}
}private void GetAdvertiserInfo()
{
//判断时间是否为当天的24:00
if (DateTime.Now.ToShortTimeString().ToString() == "14:00" || DateTime.Now.ToShortTimeString().ToString() == "14:0")
{
}
}...
其中,获取完系列后,还要获取其他的数据。我想用线程池做,就是广告系列获取完后,接着获取下面的数据。给些思路不胜感激。Thread线程池
/// 服务启动的操作
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
// TODO: 在此处添加代码以启动服务。
StartGetData();
}/// <summary>
/// 服务启动,开始获取数据
/// </summary>
private void StartGetData()
{
try
{
//通过ThreadStart委托告诉子线程将执行什么方法。(这里执行获取广告主消耗数据的方法)
ThreadAPI = new Thread(new ThreadStart(GetAdvertiserInfo));
ThreadAPI.Start();//启动新线程
System.Diagnostics.Trace.Write("线程任务开始");
}
catch (Exception ex)
{
Logger.Error("获取广告主消耗数据的方法错误!", ex);
}
}private void GetAdvertiserInfo()
{
//判断时间是否为当天的24:00
if (DateTime.Now.ToShortTimeString().ToString() == "14:00" || DateTime.Now.ToShortTimeString().ToString() == "14:0")
{
}
}...
其中,获取完系列后,还要获取其他的数据。我想用线程池做,就是广告系列获取完后,接着获取下面的数据。给些思路不胜感激。Thread线程池
解决方案 »
- 导出Excel 出错InteropServices.COMException (0x800A03EC): 无法访问文件。请尝试下列方法之一
- ASP.net中Repeater控件多条件查询
- 排行榜效果css(排名第10的由于“10”是2位数字所以宽度多出)解决。。
- 关于ASP.Net首页的优化
- 除了微软自己的网站,还有没有其它大的网站是用.net做的?
- 从库里取出time字段的值,随着页面刷新,页面显示这个值不会改变。但是库中的time字段更新为当前时间,用COOKIE怎么实现?
- 如何实现在页面中自动添加多个输入框,并获取相应值??谢。。。。
- 求助,大家看看,那里的代码如何写啊.
- 100分紧急求救:WEB弹出窗口如何定位。(在线等待,急急急!!!)
- 请问序列化的作用是什么,最好举几个实用的例子(不要程序!).
- 正则
- 发布网站的时候必须整个发布吗?有个小改动能单独发布指定的文件或目录吗?
1、计划任务
可以写一个简单的控制台应用程序,在main方法里面调用你的GetAdvertiserInfo()方法就可以了。
然后使用系统的计划任务来执行这个控制台程序就可以了。(或者写个winform在load里面调用也一样)2、就用你现在这种系统服务
就像你现在这样就可以了,但是需要在GetAdvertiserInfo()方法中加一个while死循环。
例如:
private void GetAdvertiserInfo()
{
while (true)
{
if (xxx)
{
//.....
}
}
}也可以使用一个timer定时器,这样GetAdvertiserInfo()方法中就不需要死循环了。