使用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
随机推荐
- sqlserver获取指定数据库的描述
SELECT 字段名= convert(varchar(100), a.name), 表名= convert(varchar(50), d.name ), 类型= CONVERT(varchar(50 ...
- linux防火墙查看、开启、关闭
查看 vi /etc/sysconfig/iptables 开启 service iptables stop 关闭 service iptables restart
- IIS7的CMD指令
AppCmd.exe工具所在目录 C:\windows\sytstem32\inetsrv\目录下 使用命令行管理IIS 7.0时,需要使用IIS7.0提供的全新管理工具AppCmd.exe.AppC ...
- WCF项目中出现“目标程序集不包含服务类型”的解决办法
如果创建新项目时(以下简称A项目)选择的是WCF相关的项目模板,并且在A项目中只定义接口而不实现接口,那么任何引用了A项目的项目,在调试时都会弹出警告框“目标程序集不包含服务类型.可能需要调整此程序集 ...
- SQL IN
here are some additional clause in the SQL language that can be used to simplify queries by decrease ...
- CSS3-border-radius 属性
向 div 元素添加圆角边框: div { border:2px solid; border-radius:25px; } IE9+.Firefox 4+.Chrome.Safari 5+ 以及 Op ...
- Python 高级图像处理
构建图像搜索引擎并不是一件容易的任务.这里有几个概念.工具.想法和技术需要实现.主要的图像处理概念之一是逆图像查询(RIQ).Google.Cloudera.Sumo Logic 和 Birst 等公 ...
- 转:sublime2 官方网址
1. sublime2 官方网址 http://www.sublimetext.com/2
- Redis数据类型--List
Redis列表是简单的字符串列表,依照插入顺序排序. 你能够加入一个元素到列表的头部(左边)或者尾部(右边) LPUSH 命令插入一个新的元素到头部, RPUSH插入一个新元素到尾部. 当一个这两个操 ...
- [Functional Programming] Function signature
It is really important to understand function signature in functional programming. The the code exam ...