我有一个简单的Windows服务应用程序,我试图在VS 2008 IDE中进行调试,但每次运行代码时,出现错误“尝试读取或写入受保护的内存,这通常表示其他内存已损坏“。。在下面的service.Stop()
线会出现此错误:Windows服务错误:“尝试读取或写入受保护的内存,这通常表示其他内存已损坏。”
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main(string[] args)
{
ServiceBase[] servicesToRun;
servicesToRun = new ServiceBase[]
{
new Service1()
};
if (Environment.UserInteractive)
{
Type type = typeof(ServiceBase);
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
MethodInfo method = type.GetMethod("OnStart", flags);
foreach (ServiceBase service in servicesToRun)
{
method.Invoke(service, new object[] { args });
}
Console.WriteLine("Press any key to exit");
Console.Read();
foreach (ServiceBase service in servicesToRun)
{
service.Stop();//ERROR OCCURS HERE!
}
}
else
{
ServiceBase.Run(servicesToRun);
}
}
}
下面是一个简单的Windows服务类
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
}
安装时运行正常,以澄清某些事情,ServiceBase的OnStop方法没有参数,因此不需要传递新对象[] {args} – pdiddy 2009-11-27 16:12:30