`
pcajax
  • 浏览: 2168114 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Window Services的调试和非托管dll的引用及其他一些注意问题

阅读更多
  • 一个asp.net项目,客户提出需求,需要增加即时短信提醒功能;因为项目中使用到GPRS模块做无线通讯,还可以用作发送短信,就用了这个GPRS模块发短信提醒;
    这个即时短信提醒功能,计划用window services实现;然后修改表结构,开始window services的代码编写。代码编写完成后,开始调试。测试时才发现,window services测试还不简单,google了下,window services的调试主要有以下几个方法:
    方法1:写日志
     原始的调试windows service的方法,但是调试起来不方便。

方法2:附加进程
        附加进程的方法可以像调试正常的widows程序一样,设置断点进行单步调试。但是必须在安装启动服务后,才可以进行附加此服务进程,可在附加的同时OnStart 函数已经执行完毕,所以对Onstart 无法调试(正常服务的启动时间为30秒左右,当服务启动时间超过30秒会报错)。需要通过设置启动服务延时来加载调试。设置有些繁琐;


方法3:修改Main函数,在用户交互模式下调试。调试时更改Project的输出类型为Console Application,就可以直接调试了。

     if (Environment.UserInteractive)
            {
                Service1 s = new Service1();
                string[] args = { "a", "b" };
                s.start(args);
                Console.WriteLine("the service is started");
                Console.ReadLine();
                s.stop();
                Console.WriteLine("the service is stopped");
            }
            else
            {
                ServiceBase[] ServicesToRun;
                ServicesToRun = new ServiceBase[]
         {
          new Service1()
         };
                ServiceBase.Run(ServicesToRun);
            }


在应用非托管dll时,有时会提示找不到dll文件,可以依次尝试一下过程看会否有帮助:
1.复制dll文件到项目bin文件下;
2.复制dll文件到system32路径下;
3.在[DllImport]是加上dll文件路径;

另外,在开发window services程序时,使用的Timer控件需注意。如果使用System.Windows.Form.Timer控件,可能会不能正常运行,应使用System.Timers.Timer控件;
安装服务后,在删除服务时,可以直接使用SC.exe命令删除服务

分享到:
评论

相关推荐

    window ce和mobile下dll的创建和调用方法

    研究了两天,终于找到window ce和mobile下dll的创建和调用方法,记得,在定义源型的时候一定要使用 extern "C" _declspec(dllexport) int sum(int a, int b) { return a+b; } 不要只在头文件里定义,否则在调用时会...

    window DLL文件修复

    DLL文件是Windows系统中一种共享代码和数据的文件类型,它们包含可由多个程序同时使用的函数和其他资源。当DLL文件损坏或丢失时,可能会导致各种软件运行异常,甚至系统崩溃。 描述中提到的“一个方便、快速修复...

    window环境下需要hadoop.dll

    标题提到的“window环境下需要hadoop.dll”意味着在Windows操作系统上运行Hadoop时,可能会遇到一个特定的问题,即缺少必要的动态链接库文件——hadoop.dll。这个文件是Hadoop在Windows上运行的关键组件,它包含了...

    WindowEx5_01.dll

    WindowEx5_01.dll

    VS查看Window dll文件

    确保调试器设置为“自动”或“混合”,这样可以同时调试托管代码(如.NET)和本机代码。 接下来,我们可以利用"模块"窗口(Modules Window),它可以在"视图"->"其他窗口"->"模块"(View -> Other Windows -> ...

    WinCE中安装的sqlceme35.dll

    7. **调试和日志**:如果问题仍然存在,开启调试模式并查看日志以获取更详细的错误信息,帮助定位问题所在。 综上所述,解决"找不到pinvoke dll sqlceme35.dll"错误的关键在于正确安装SQL Server Compact Edition ...

    window注册表所需要的office.DLL

    window服务器上office开发需要的DLL,包含 adodb.dll adodb.dll.reg dao.dll dao.dll.reg Microsoft.Office.Interop.Access.dll Microsoft.Office.Interop.Access.dll.reg Microsoft.Office.Interop.Excel.dll ...

    window opencv_java320.dll

    window平台的 opencv_java320.dll 编译好的,放在java bin目录下即可

    文件下载-.dll文件-windowex.dll(含64位) 文件下载-.dll文件-windowex.dll.zip

    需要注意的是,直接替换系统中的.dll文件可能会导致其他依赖此文件的应用程序出现问题。因此,如果非专业人士,建议在遇到.dll缺失问题时,首先尝试更新或重新安装出问题的软件,或者寻求专业帮助。 此外,了解如何...

    window10 .dll程序

    标题 "window10 .dll程序" 暗示我们讨论的是Windows 10操作系统中与动态链接库(DLL)文件相关的问题,特别是涉及到"MSVCR120.DLL"这个特定的文件。DLL文件是Windows系统中的一种共享库,它们包含可由多个程序同时...

    window缺少文件:cublas64-110.dll/cublas64-101.dll/cublas64-7.dll等

    标题中的“window缺少文件:cublas64-110.dll/cublas64-101.dll/cublas64-7.dll等”表明这是一个关于Windows操作系统中缺失CUDA库文件的问题。CUDA是由NVIDIA公司提供的一个并行计算平台和编程模型,用于利用GPU...

    window mobile dll 查看器

    Window Mobile DLL 查看器是一款专为Windows CE (Wince) 和Mobile系统设计的实用工具,主要用于查看和分析DLL(动态链接库)文件的功能和依赖性。在嵌入式开发领域,尤其是在Windows CE或Mobile平台上进行应用程序...

    window services动态发布服务

    Windows服务(Window Services)是操作系统中一种特殊类型的后台应用程序,它们在没有用户界面的情况下运行,通常用于执行系统级任务或为其他应用程序提供服务。在"Window services动态发布服务"的场景下,我们主要...

    vc6.0-window7中缺失dll大全

    vc6.0-window7中缺失dll大全 把VC光盘下的msvcp60d.dll,mfcd42d,mfc42d.dll,msvcrtd.dll,mfc042d.dll五个文件复制到C:\windows\system32目录下

    php开启intl缺少window组件icuuc51.dll,icudt51.dll,icuin51.dll,icuio51.dll

    在windos下面使用php的intl扩展时,可能会...php开启intl缺少window组件icuuc51.dll,icudt51.dll,icuin51.dll,icuio51.dll 下载完成后,放入对应的系统目录C:\Windows\SysWOW64(32位系统放入:C:\Windows\System32)

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    Java调用DLL函数是跨平台编程中的一种常见需求,特别是在Java与C/C++代码交互时。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native ...

    window 版本 ADB调试工具

    4. **日志收集**:`adb logcat`命令可以捕获设备的日志输出,这对于调试应用错误和性能问题至关重要。 5. **设备控制**:`adb reboot`、`adb install`等命令可以重启设备或安装APK,开发者可以远程控制设备执行各种...

    C#使用OpcNetApi_dll和OpcNetApi_Com_dll操作OPC

    7. **安全和性能**:在实际应用中,需要注意OPC通信的安全性和性能优化。例如,合理设置数据刷新频率,避免频繁读写导致服务器负载过高;使用安全认证机制,防止未经授权的访问;对异常和错误进行适当处理,确保系统...

    System.Windows.Interactivity.dll

    EventToCommand 事件转命令,需要引用外部插件bll外部插件:System.Windows.Interactivity.dll 用法:把这个dll文件放到项目文件中的bin目录下Debug文件夹中

    ffmpeg window版库的头文件 lib dll

    ffmpeg window版库的头文件 lib dll

Global site tag (gtag.js) - Google Analytics