使用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
随机推荐
- 获得sql server的table的表结构 -- 转到word中
SQL语句: select syscolumns.name,systypes.name,syscolumns.length from syscolumns join sysobjects on sy ...
- Intent 的Flag属性(Activity在栈位置的主宰者)
Intent 的Flag属性可用来控制Activity在栈中的排列位置,本文列举了常见的Flag. 例--(以无动画方式启动ActivityB): Intent intent=new Intent(A ...
- 一步一步学习Vim 全图解释
转载:http://linux.chinaunix.net/techdoc/desktop/2009/01/03/1056322.shtml 一步一步学习Vim 全图解释 以下注释,根据图示和自己实践 ...
- [Android Studio] Android Studio如何查看branch列表及切换branch(转载)
转载地址:http://blog.csdn.net/hyr83960944/article/details/36185231 用Git bash去切换相信大家都会,一行命令行搞定的问题.而在Andro ...
- Python学习(九)IO 编程 —— 文件读写
Python 文件读写 Python内置了读写文件的函数,用法和C是兼容的.本节介绍内容大致有:文件的打开/关闭.文件对象.文件的读写等. 本章节仅示例介绍 TXT 类型文档的读写,也就是最基础的文件 ...
- mac下python2.x和python3.x的安装方法和升级方法/卸载
一.首先问个问题,我们为什么要升级python2.x或者python3.x的版本? 一个是低版本会有些bug:或者功能问题,或者安全问题等,另外高版本会引进一些新的功能,也会废弃一些老的功能. 可以通 ...
- nose的setup和teardown
参考:http://blog.csdn.net/linda1000/article/details/8533349 1.模块的setUp和tearDown def setUp(): print &qu ...
- go语言基础之导入包的常用方法
1.导入包 示例: 法一 package main //导入包,必须使用,否则编译不过 import "fmt" import "os" func main() ...
- django 实现上传文件功能
需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...
- 【翻译自mos文章】在一次失败的 'Shutdown Immediate'之后,数据库job 不能执行。
在一次失败的 'Shutdown Immediate'之后.数据库job 不能执行. 參考原文: Database Jobs Do Not Run After a Failed 'Shutdown I ...