我目前正在为可以在控制台中运行的服务编写一些引导代码.它本质上归结为调用OnStart()方法而不是使用ServiceBase来启动和停止服务(因为如果它没有作为服务安装并且使调试成为一场噩梦,它就不会运行应用程序).
现在我使用Debugger.IsAttached来确定我是否应该使用ServiceBase.Run或[service] .OnStart,但我知道这不是最好的主意,因为有些时候最终用户想要在控制台中运行服务(看看输出等实时).
关于如何确定Windows服务控制器是否启动"我",或者用户是否在控制台中启动"我"的任何想法?Apparantly Environment.IsUserInteractive不是答案.我想过使用命令行args,但这看起来很"脏".
我总是可以看到围绕ServiceBase.Run的try-catch语句,但这看起来很脏.编辑:尝试捕获不起作用.
我有一个解决方案:把它放在这里给所有其他感兴趣的堆叠器:
public void Run()
{
if (Debugger.IsAttached || Environment.GetCommandLineArgs().Contains<string>("-console"))
{
RunAllServices();
}
else
{
try
{
string temp = Console.Title;
ServiceBase.Run((ServiceBase[])ComponentsToRun);
}
catch
{
RunAllServices();
}
}
} // void Run
private void RunAllServices()
{
foreach (ConsoleService component in ComponentsToRun)
{
component.Start();
}
WaitForCTRLC();
foreach (ConsoleService component in ComponentsToRun)
{
component.Stop();
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:在StackOverflow上有另一个问题,那个人有环境问题.CurrentDirectory是"C:\ Windows\System32"看起来可能是答案.我今天要考试.
我有一个存储过程来安排工作.这项工作需要很长时间才能完成(大约30到40分钟).我需要了解这份工作的状态.以下细节对我有帮助
1)如何查看已安排在未来时间但尚未开始的所有作业的列表
2)如何查看正在运行的作业列表以及它们运行时的时间跨度
3)如何查看作业是否已成功完成或由于任何错误而在两者之间停止.
我需要在WHERE子句中使用别名,但它一直告诉我它是一个未知的列.有什么方法可以解决这个问题吗?我需要选择评级高于x的记录.评级计算如下:
sum(reviews.rev_rating)/count(reviews.rev_id) as avg_rating
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用更新的构建系统; 目前,我正试图找到一种根据目标平台设置编译器和标志的好方法.
我想做的是像
switch $(PLATFORM)_$(BUILD_TYPE)
case "Linux_x86_release"
CFLAGS = -O3
case "Linux_x86_debug"
CFLAGS = -O0 -g
case "ARM_release"
CC = armcc
AR = armlink
CFLAGS = -O2 -fx
...
Run Code Online (Sandbox Code Playgroud)
这是GNU Make不支持的.现在,我的第一个想法就是做
-include $(PLATFORM)_$(BUILD_TYPE)
Run Code Online (Sandbox Code Playgroud)
这是一个相当不错的解决方案,然而,它很难概述文件之间的差异,更不用说我期待编写和维护一个好的60-80文件,每个文件包含一组变量定义.
有没有人碰巧知道更好的方法来实现这一目标?即根据另一个变量设置一组标志和其他选项?
我有一个小项目,我想在一台我们都可以访问的机器上与其他几个人共享.我创建了一个本地仓库的裸露副本
git clone --bare --no-hardlinks path/to/.git/ repoToShare.git
Run Code Online (Sandbox Code Playgroud)
然后我将repoToShare.git移动到服务器.
我可以用以下内容查看:
git clone ssh://user@address/opt/gitroot/repoToShare.git/ test
Run Code Online (Sandbox Code Playgroud)
然后我可以看到本地仓库中的所有内容并对此进行提交.当我尝试将更改推回到远程服务器时,我收到以下错误.
*** Project description file hasn't been set
error: hooks/update exited with error code 1
error: hook declined to update refs/heads/master
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我想使用Linux和免费环境开发Adobe Flex应用程序.我更喜欢自由的替代品,但啤酒也可以.;-)
您是否有人使用这样的环境开发Adobe Flex富Internet应用程序?或者我应该面对"事实",即Flex Builder是Flex开发的必备工具,没有它我或多或少会丢失?
在Windows Mobile上的C++项目(即没有.NET)中,我正在寻找一种在两个独立运行的应用程序之间轻松通信的方法.应用程序A将运行服务,而应用程序B将为用户提供一些功能--B必须为其调用某些功能.我宁愿不在COM中实现任何东西.
事实上,我宁愿不做任何类型的序列化或类似(即这将排除使用套接字/管道/文件),而是让B将所有参数和指针传递给A,就像A是B的一部分一样.此外,应用程序C,D和E应该能够只运行一个A实例.
我应该补充一点,B有时应该将数组(或std :: vector或std :: map)返回给A,其中大小以前不知道.
这可能在Windows Mobile和其他平台上可行吗?
Eclipse可以为生成的方法(覆盖,实现接口等)最终制作参数,如果是,如何?
如果我没弄错的话,IntelliJ可以选择它.我在Eclipse中找不到类似的东西.
我已经习惯于手动制作参数,但我希望自动解决方案.
我想了解更多有关C++ 0x的信息.什么是一些很好的参考和资源?有人写过关于这个主题的好书吗?
我正在使用MIDP 2.0(JSR 118),我只是注意到J2ME中没有读取器的字符串.
有谁知道你应该如何从平台InputStream或InputStreamReader平台独立的方式阅读字符串(即两个不同型号的java手机之间)?