在重写Service的onStart方法后,发现onStart方法中的代码并未执行,有木有人知道是怎么回事?
解决方案 »
- 导入现有Android工程时,出现Project has no default.properties file
- 视频播放中 闹铃响起 关闭后 视频页面一直处于黑屏状态 请问有什么方法可以解决么
- Bionic Libc中close(fd)函数的实现位置
- 问一个模拟器的问题
- android dialog如何自定义??要炫的
- 关于android自带的button资源
- ViewFlipper切换图片的一些问题
- 一个简单的安卓问题,求教,困扰好几天了。
- google play购买失败 跪求大神解决
- Android Studio如何编写横屏的layout
- 求教关于ant引用android第三方工程打包的问题
- android 聊天界面 语音的问题
public partial class MyService : ServiceBase{
public MyService(){
InitializeComponent();
}
protected override void OnStart(string[] args){
#if DEBUG
Debugger.Launch(); //Launches and attaches a debugger to the process.
#endif
// TODO: add your initialize code here.
}
protected override void OnStop(){
}
}
调试WindowsService的OnStart函数是比较困难的也比较让人头疼的事情,用attach process的方法是不能调试OnStart函数的,在挂载时就已经执行过了。我在网上看了一些方法都是比较麻烦的,有的说是写一个console程序将OnStart函数里的代码先在console程序里调试通了再放到service中,感觉这个方法工作量太大了,^_^我是比较懒的,后来在网上看到一个很简单的方法是这样的virtual void OnStart(String* args[]){Debugger::Launch();//TODO: Add code here to start your service.}我试了这个方法后,发现还是不行,我查了msdn说Debugger::Launch()是发动和挂载到相应的进程中,他并没有breadkpoint的功能,我就想啊,要是能动态的加一个breakpoint那问题不是就解决了吗?virtual void OnStart(String* args[]){Debugger::Launch();Debugger::Launch();//TODO: Add code here to start your service.这样就可以跳到这里来调试了}可是我们在程序中设置断点后在运行exe文件时是不会break的。既然Debugger有挂载的功能会不会也有动态设置断点的功能呢,^_^,去msdn看了下它的成员函数果然有一个方法Debugger::Break()可以动态设置断点,问题就轻松解决了。^_^。既然Debugger::Break();可以动态设置断点那么在调试windowsService的其他函数中也可以用到,那调试windowsService程序不是和调试winform程序一样简单了吗?^_^ virtual void OnStart(String* args[])中的参数,是在启动服务时可以传入的。例如:>cmd sc start servicename args[0] args[1] .........