使用Topshelf创建Windows服务(转)
Calculator
public class Calculator : ICalculator
{
public Calculator()
{
Logger = LogManager.GetCurrentClassLogger();
} public ILogger Logger { get; set; } public CalculationResult Add(string n1, string n2)
{
Logger?.Info($"received request to Add {n1} to {n2}"); return Calculate(n1, n2, _add);
} public CalculationResult Subtract(string n1, string n2)
{
Logger?.Info($"received request to Subtract {n2} from {n1}"); return Calculate(n1, n2, _subtract);
} public CalculationResult Multiply(string n1, string n2)
{
Logger?.Info($"received request to Multiply {n1} by {n2}"); return Calculate(n1, n2, _multiply);
} public CalculationResult Divide(string n1, string n2)
{
Logger?.Info($"received request to Divide {n1} by {n2}"); return Calculate(n1, n2, _divide);
} private static CalculationResult Calculate(string n1, string n2, Func<double, double, double> calculate)
{
var value1 = n1.ToDouble();
if (!value1.HasValue)
{
return GetCouldNotConvertToDoubleResult(n1);
} var value2 = n2.ToDouble();
if (!value2.HasValue)
{
return GetCouldNotConvertToDoubleResult(n2);
} double result = calculate(value1.Value, value2.Value);
return new CalculationResult
{
Answer = result
};
} private static readonly Func<double, double, double> _add = (value1, value2) => value1 + value2;
private static readonly Func<double, double, double> _subtract = (value1, value2) => value1 - value2;
private static readonly Func<double, double, double> _multiply = (value1, value2) => value1 * value2;
private static readonly Func<double, double, double> _divide = (value1, value2) => value2 == ? double.NaN : value1 / value2; private static CalculationResult GetCouldNotConvertToDoubleResult(string input)
{
return new CalculationResult
{
Message = $"Could not convert '{input}' to a double"
};
}
}
https://github.com/NotMyself/CalculatorService.git
http://www.cnblogs.com/jys509/p/4614975.html
使用Topshelf创建Windows服务(转)的更多相关文章
- 使用Topshelf创建Windows服务
概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...
- Topshelf创建Windows服务
使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps ...
- 【第三方插件】使用Topshelf创建Windows服务
概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...
- C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案
本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...
- 使用Topshelf创建Windows服务[转载]
概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...
- [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务
除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...
- 使用 Topshelf 创建 Windows 服务
Ø 前言 C# 创建 Windows 服务的方式有很多种,Topshelf 就是其中一种方式,而且使用起来比较简单.下面使用 Visual Studio Ultimate 2013 演示一下具体的使 ...
- 使用Topshelf创建Windows 服务
本文转载: http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html http://www.cnblogs.com/jys509/p ...
- Quartz.NET+Topshelf 创建Windows服务
由于项目开发中经常会有定时任务执行的需求,所以会第一时间就想到 windows 服务 的方式,但是做过开发的同学都知道windows服务不利于调试,安装也麻烦: 并且有开源的作业框架Quartz.NE ...
- Topshelf 创建windows服务注意事项
其中项目应该是控制台应用程序 test.exe需要赋与管理员权限,右键属性可以定义. test.exe install test.exe unstall
随机推荐
- win10怎么彻底关闭自动更新
原文:https://jingyan.baidu.com/article/9faa7231e7b78b473c28cbb6.html 方法/步骤 1 单击左下角开始菜单点击设置图标进入设置界面 2 ...
- 数据库中MCO
约束条件指该字段取值的约束条件,“ M ”表示必填.“ C ”表示条件必填.“ O ”表示可填,以下含义同
- 基于 Node.js 的轻量「持续集成」工具 CIZE
CIZE 是什么? CIZE 是一个「持续集成」工具,希望能让开发人员更快捷的搭建一个完整.可靠.便捷的 CI 服务. 甚至可以像 Gulp 或 Grunt 一样,仅仅通过一个 cizefile.js ...
- [Android UI] listview 自定义style
<style name="comm_listview_style"> <item name="android:cacheColorHint"& ...
- HBase系统架构及数据结构(转)
原文链接:Hbase系统架构及数据结构 HBase中的表一般有这样的特点: 1 大:一个表可以有上亿行,上百万列 2 面向列:面向列(族)的存储和权限控制,列(族)独立检索. 3 稀疏:对于为空(nu ...
- axure 6.5 汉化正式版软件及注册码
Axure公司发布了Axure RP 6.5 正式版. 官方主页: http://www.axure.com/news 官方下载: http://www.axure.com/download 视频介绍 ...
- iOS:切换视图的第三种方式:UITabBarController标签栏控制器
UITabBarController:标签栏控制器 •通过设置viewControllers属性或者addChildViewController方法可以添加子控制器 –NSArray *viewCon ...
- dedecms织梦 v5.6 两处跨站漏洞
漏洞版本: dedecms织梦 v5.6 漏洞描述: DedeCMS内容管理系统软件采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板.网站升级转移均提供很大的便利,健壮的模板标 ...
- 使用dulilib DirectUI库(一)
1.在创建的窗口类里面 需要继承CWindowWnd.INotifyUI 对于CWindowWnd里面的方法: 实现;,重载virtualUINTGetClassStyle()const;返回窗口的风 ...
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
1.同一个数据库实例.同用户,多表创建视图 2.同一个数据库实例,不同用户下.多表创建视图 3.同一个数据库,不同数据库实例,多表创建视图 4.不同类型数据库,多表创建视图 1.同一个数据库实例.同用 ...