我提出的方法以外的代码,因为我需要关闭和处置的StreamWriter和FILESTREAM在调用OnStop()方法:
private Timer timer = new Timer();
private FileStream fs = new FileStream(@"D:\Hello.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
private StreamWriter sw = new StreamWriter(fs);
//The fs is in red line, having error
然而,新的StreamWriter内的FS提示错误“A字段初始不能引用非静态字段,方法或属性..”。 所以我做了静态的FileStream:
private static FileStream fs = new FileStream(@"D:\Hello.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
当我运行程序时,它不会写入文本文件,并得出结论认为,这是静态的,因为。 我搜索一下,读这个 :“A类可以声明为static,这表明它仅包含静态成员是无法创建使用new关键字静态类的实例的静态类由.NET Framework自动加载。公共语言运行时,当含有该类别的节目或命名空间被加载(CLR)“。
这是我的示例代码:
public partial class Service1 : ServiceBase
{
private Timer timer = new Timer();
private FileStream fs = new FileStream(@"D:\Hello.txt", FileMode.Append, FileAccess.Write, FileShare.ReadWrite);
private StreamWriter sw = new StreamWriter(fs);
//The fs is in red line, having error. Look in my description for error's details
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer.Elapsed += new ElapsedEventHandler(WriteText);
timer.Interval = 5000; //5 seconds
timer.Start();
}
public void WriteText(object source, ElapsedEventArgs e)
{
sw.WriteLine(DateTime.Now + " Windows Service");
}
protected override void OnStop()
{
sw.Close();
sw.Dispose();
fs.Close();
fs.Dispose();
timer.Stop();
}
}
你觉得我应该怎么办?