.NET自动服务程序—C#(二)

C#实现与SIMATIC NET OPC DA通讯 OPC是Object Linking and Embedding(OLE)forProcess Control的缩写,它是微软公司的对象链接和嵌入技术在过程控制方面的应用。OPC以OLE/COM/DCOM技术为基础,采用客户/服务器模式,为工业自动化软件面向对象的开发提供了统一的标准,这个标准定义了应用Microsoft操作系统在基于PC的客户机之间交换自动化实时数据的方法,采用这项标准后,硬件开 阅读详情

.NET自动服务程序—C#(二)

追风(VisualSW)

启动服务:

定义两个变量:

private string[,] arrConf;保存配置信息

private Assembly[] assObj;加载组件

 

在OnStart事件中添加如下代码:

protected override void OnStart(string[] args)

{                     

WriteLog("/************************************************************/");

        WriteLog("ScheculerServer Start at "+DateTime.Now.ToString());

        //Load Configuation

        if(!ReadConf())return;

 

        //Load Assembly

        try

        {

                assObj=new Assembly[arrConf.GetLength(1)];

                for(int i=0;i<assObj.Length;i++)

                {

                        assObj[i]=Assembly.LoadFrom(arrConf[0,i].ToString());

                        arrConf[0,i]="NotRuning";

                }

        }

        catch(Exception e)

        {

                WriteLog(DateTime.Now.ToString());

                WriteLog("Load Dll Error:");

                WriteLog(e.ToString());

        }

 

        //Start Time

        SchedulerTimer.Interval=30000;//设置每30秒触发

        SchedulerTimer.Enabled=true;//启动定时器

}

 

定时器触发:

此处完成检查时间是否运行

private void SchedulerTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

{

        try

        {

                //SchedulerTimer.Enabled=false;

                DateTime dtNow=DateTime.Now;

                DateTime dtRun;

                for(int i=0;i<arrConf.GetLength(1);i++)

                {

                        dtRun=Convert.ToDateTime(arrConf[1,i].ToString());

                        if(dtRun.AddSeconds(-30)<=dtNow && dtNow<=dtRun.AddSeconds(30))                                        {

                                if(arrConf[0,i].ToString().Trim()=="NotRuning")

                                {

                                        foreach(Type t in assObj[i].GetTypes())

                                        {

                                                if(t.IsClass && !t.IsAbstract && t.IsPublic)

                                        {

                                                        Object obj=Activator.CreateInstance(t);                        

                                                        MethodInfo mi=t.GetMethod("Run");

                                                        if(mi!=null)

                                                        {

                                                                mi.Invoke(obj,null);

                                                                obj=null;

                                                                GC.Collect();

                                                                break;

                                                        }

                                                        obj=null;

                                                        GC.Collect();                                                     

                                                }

                                        }

                                        arrConf[0,i]="OnRuning";                                             

                WriteLog("-------------------------------------------------------------");

                WriteLog(DateTime.Now.ToString()+":Runing "+arrConf[1,i]+" "+assObj[i].Location.ToString());

                WriteLog("-------------------------------------------------------------");                                                      

                        }

                       

                }

        catch(Exception ex)

        {

                                WriteLog("##########################################################");

        WriteLog(ex.ToString());

                                WriteLog("##########################################################");

        }

}

 

这时程序的主骨架就完成了,下一步需要制作Windows服务安装程序,切换到设计页面,在属性的右下脚有Add Installer字样,单击,VS.NET自动帮你生成安装程序。

打开ProjectInstaller.cs文件,可以看到两个组件,设置其属性。

运行帐号选择LocalSystem,系统以本地系统帐号运行。

启动类型选择自动。

编译为exe,打开VS.NET cmd,进入exe目录,运行InstallUtil.exe SchedulerServer.exe安装服务,成功之后,打开服务管理可以看到刚才的服务,启动服务即可。

服务日志保存在系统目录下的SchedulerServer.txt

/************************************************************/

ScheculerServer Start at 12/24/2003 3:46:21 PM

-------------------------------------------------------------

12/24/2003 3:46:51 PM:Runing 15:47 e:/work/geid/src/geidautocheck/bin/debug/geidautocheck.dll

-------------------------------------------------------------

ScheculerServer Stop at 12/24/2003 3:48:55 PM

/************************************************************/

 

自动运行程序:

1..NET组件(dll)

2.入口为

public void Run()

{}

 

手把手教你用STM32F103的普通IO口读取SSI编码器(附完整代码与示波器调试心得) 本文详细介绍了如何利用STM32F103的普通IO口读取SSI绝对式编码器数据,提供完整的硬件连接方案、精确时序控制的软件实现及示波器调试技巧。通过低成本方案实现高精度位置反馈,适用于工业自动化和机器人控制领域。 阅读详情

相关推荐

Java实现双色球&大乐透随机选号算法——原理详解与代码实战

掌握核心语法:集合操作、随机数生成、排序。贴近实际场景:将编程知识应用于生活问题的解决。

wangchl0932的博客 4982

使用.net 6.0创建Worker Service服务程序,并安装成Windows服务程序

使用.net 6.0创建Worker Service服务程序,并安装成Windows服务程序

红尘逸事、浊酒一杯的博客 6491

Innovus中_clock_gen skew group的隐藏陷阱:如何避免自动分组导致的时序问题

本文深入剖析了在Innovus工具进行时钟树综合(CTS)时,`_clock_gen` skew group自动分组机制可能引发的隐蔽时序问题。文章通过实际案例,解释了该机制如何错误地将分频寄存器与配置寄存器归为一组,从而破坏时钟域边界并导致post-CTS时序违例,并提供了关闭自动提取、手动精确定义skew group等有效解决方案。

gpu4optimizer的博客 266

.NET自动服务程序—C#

用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Windows service)。Windows service是一种系统自动的、无人值守的程序(仅存在于Windows NT、2000和XP操作系统中),它能够在系统启动时开始运行。用户可以通过Servi

liumyong的专栏 2172

Cesium体渲染实战:从医学CT到气象数据的3D可视化全攻略

本文详细介绍了如何利用Cesium体渲染技术实现医学CT和气象数据的3D可视化。从数据预处理到交互式渲染,涵盖了DICOM和NetCDF格式的处理技巧,以及性能优化的实战策略,帮助开发者高效处理复杂的三维数据集。

weixin_28717431的博客 420

Visual Studio Installer下载失败的5种修复方法(含DNS修改/补丁安装)

本文针对Visual Studio Installer下载安装文件失败的问题,提供了从网络层到系统层的深度排查与修复指南。详细介绍了DNS修改、代理配置、防火墙设置、系统服务检查等5种核心修复方法,并包含离线安装与手动补丁等替代方案,帮助开发者彻底解决安装难题。

sprite的博客 1618

用.NET创建Windows服务

Windows 服务,以前的NT服务,都是被作为Windows NT操作系统的一部分引进来的。通过服务控制管理器,Windows服务是可控的,可以终止、暂停及当需要时启动。你必须还要把一个服务安装程序添加到你的Windows服务当中,这样便于InstallUtil或是任何别的安装程序知道应用你服务的是怎样的配置设置。译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解。

biyusr的专栏 1215

深入分析RAG知识库多模态数据预处理

多模态企业数据预处理是构建高质量RAG知识库的关键环节。本文详解了处理流程:1)文档格式识别与路由;2)多模态内容提取(文本、图像、音视频);3)结构解析与语义重建;4)数据清洗与增强;5)智能分块(强调语义完整性);6)元数据注入。推荐使用开源工具如PaddleOCR、Whisper、BLIP-2等,或商业API处理复杂场景,最终生成带丰富元数据的结构化内容,为后续向量化检索奠定基础。

qq_35354529的博客 1379

.NET自动服务程序—C#(一)

.NET自动服务程序—C#(一) 追风(VisualSW) 应用程序开发中,常常需要实现这样一种功能:让服务器在每天的特定时刻运行固定的程序(或者实现固定的操作),比如让系统在每天的2:00备份数据库数据。要实现这样的功能,我们可以使用Windows服务(Windows service)。Windows service是一种系统自动的、无人值守的程序(仅存在于Windows N

VisualSW的专栏 2536

思博伦Spirent TestCenter创建单播流uni-stream

Traffic Generator列表中会出现刚才创建的uni-stream,创建完成。通常测试情况下,主要对Ethenet II和IPv4 Header进行配置。(通常情况下,如果流配置比较规范,选择任意端口接收,也没问题。编辑uni-stream基本信息。配置本条流由STC哪个端口接收。

辗转反测的博客 1681

Android系统开机时间分析与优化指南

本文系统阐述了Android开机时间优化的全流程技术方案。首先详细解析了从电源键按下到桌面显示的完整启动流程及关键事件序列,然后介绍了秒表计时、日志分析和自动化脚本三种测量方法。重点从底层和上层两个维度提出了具体优化措施:底层包括编译器优化、内核驱动裁剪和日志精简;上层涵盖系统服务参数调整、应用预优化和功能组件精简。最后提供了验证工具和方法,并强调优化需要在性能、功耗和功能间取得平衡。通过这套系统化方案,可有效提升Android设备的开机速度与用户体验。

学无止境 352

C#创建Windows服务程序

一.Windows服务介绍:   Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual Studio.Net下,你可以运用C++或Visual C#或Visual Basic.Net很轻松的创建一个Window

杨友山 9819

【ODX介绍】-4.2-UDS诊断$27服务在ODX-D诊断描述文件中如何描述

共25页精讲:附ODX-D XML:UDS $27 Security服务0x61和0x62 Sub-Function,其它Sub-Function可参照其格式。 目录 1 ODX-D描述一个UDS $27 Security服务Sub-Function的结构 2 标签DIAG-SERVICE描述的内容 2.1 举例:DIAG-SERVICE的XML描述 3 标签REQUEST描述的内容 3.1 举例:REQUEST的XML描述 4 标签POS-RESPONSE描述的内容 4.1 举例:PO..

「汽车电子助手」的博客 1122

用Visual C#创建Windows服务程序

 一.Windows服务介绍:  Windows服务以前被称作NT服务,是一些运行在Windows NT、Windows 2000和Windows XP等操作系统下用户环境以外的程序。在以前,编写Windows服务程序需要程序员很强的C或C++功底。然而现在在Visual Studio.Net下,你可以运用C++或Vis...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 730

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C# 服务程序 弹窗

C#服务程序编写

weixin_42176639的博客 4186

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C# Windows 服务程序的开发

安装程序将服务的可执行文件注册到系统服务管理器中,并提供安装、卸载和配置服务的功能。在这个类中,需要重写 OnStart 和 OnStop 方法,分别用于处理服务的启动和停止逻辑。通过使用 .NET 提供的相关类和方法,可以轻松地创建、安装、启动和停止 Windows 服务。Windows 服务是一种特殊类型的应用程序,它可以在操作系统启动时自动启动,并在后台持续运行,而无需用户交互。这里重写了一个 OnStart 和 OnStop 方法,意思是程序启动的时候执行一次,和程序关闭的时候执行一次。

熊思雨的博客 5140

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

安装C# Windows服务程序

安装C# Windows服务程序1、在服务程序的是设计窗体中,点击右键“添加安装程序”,添加服务安装程序。否则,安装时会出现如下错误:正在安装程序集“C:/Program/xx.exe”。受影响的参数是:logtoconsole = assemblypath = C:/Progr

tearsmo的专栏 2184

使用C#创建安装Windows服务程序(干货)

Windows服务是在Windows操作系统上,以后台形式运行的应用程序。它们可以在系统启动时自动启动,并且独立于用户登录。Windows服务通常用于执行那些长时间运行、无需用户交互或需要在后台持续执行的任务。

我是菜鸟 4627

用C#创建简单的windows服务程序

在做C# WINDOWS服务之前先熟悉一下C# WINDOWS服务程序在C#中的写法。     1.在VS.NET2003中新建一个WINDOWS服务程序的项目WinSrv_A。     2.更改SERVICE1.CS属性SERVICENAME为你所要建立的服务名称,在服务管理器->名称中你可以看到你的服务名     3.按F7进入代码窗口,里面有2个重载函数是你要在其中写代码的一个是 /

Danny_Yao的学习笔记 715
上一篇: 浅谈B/S客户端与服务器端交互数据(二)
下一篇: .NET自动服务程序—C#(一)
笑对最好
博客等级 码龄24年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值