【发布时间】:2010-01-29 02:41:07
【问题描述】:
我正在尝试使用 VS2008 在 C# 中创建一个简单的服务,该服务会在计算机进入睡眠模式时创建一个文本文件。我当前的代码抛出以下错误:
“SleepNotifierService.WqlEventQuery”不包含采用“1”参数的构造函数
现在我查看了对象浏览器,看起来它确实接受了一个参数。这是浏览器必须说的:
公共 WqlEventQuery(字符串查询或事件类名)
这是我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Management;
using System.IO;
namespace SleepNotifierService
{
public class WqlEventQuery : EventQuery { }
public partial class Service1 : ServiceBase
{
ManagementEventWatcher _watcher;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
WqlEventQuery query = new WqlEventQuery("Win32_PowerManagementEvent");
_watcher = new ManagementEventWatcher(query);
_watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
_watcher.Start();
}
protected override void OnStop()
{
_watcher.Stop();
}
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
try
{
int eventType = Convert.ToInt32(e.NewEvent.Properties["EventType"].Value);
switch (eventType)
{
case 4:
Sleep();
break;
case 7:
Resume();
break;
}
}
catch (Exception ex)
{
//Log(ex.Message);
}
}
public void Sleep()
{
StreamWriter SW;
SW = File.CreateText("c:\\MyTextFile.txt");
SW.WriteLine("Sleep mode initiated");
SW.Close();
}
public void Resume()
{
}
}
}
我对那个对象浏览器的解释有误吗?一般来说,我是创建服务和 C#/.NET 的新手,所以这可能是微不足道的。
感谢任何帮助,
托梅克
【问题讨论】: