【问题标题】:how do I call my functions in .net如何在 .net 中调用我的函数
【发布时间】:2011-08-18 00:08:56
【问题描述】:

我正在学习 .net 并按照下面的教程编写服务 http://www.beansoftware.com/NET-Tutorials/Create-Windows-Services.aspx

windows 服务安装成功,它也启动了。但是当我更改文件名或删除文件或添加文件时,它不会将任何信息添加到我的日志文件中 C:\Folder\FolderLog.txt

我看到了 FolderWatcher_** 的 3 种方法,但我在代码中没有看到对这些方法的调用。我对 .net 很陌生,所以我不确定它们是如何被调用的

这是我的完整代码

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.IO;

    namespace Watcher
    {
        public partial class Watcher : ServiceBase
        {
            public Watcher()
            {
                InitializeComponent();
            }

            protected override void OnStart(string[] args)
            {

            }

            protected override void OnStop()
            {
            }

            private void FolderWatcher_Created(object sender, System.IO.FileSystemEventArgs e)
            {
                TextWriter writer = new StreamWriter("C:\\folder\\FolderLog.txt", true);
                writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been created. ");
                writer.Close();
            }

            private void FolderWatcher_Deleted(object sender, System.IO.FileSystemEventArgs e)
            {
                TextWriter writer = new StreamWriter("C:\\folder\\FolderLog.txt", true);
                writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been deleted. ");
                writer.Close();
            }

            private void FolderWatcher_Renamed(object sender, System.IO.RenamedEventArgs e)
            {
                TextWriter writer = new StreamWriter("C:\\folder\\log.txt", true);
                writer.WriteLine(DateTime.Now + " A new folder/file with name " + e.Name + " has been renamed. ");
                writer.Close();
            }


        }
    }

我已遵循该教程中的每一步。我还没有看到任何描述这些方法是如何被调用的。任何帮助都会很棒

【问题讨论】:

  • 也许,我不确定,因为我从未创建过服务,可能存在权限问题。 Windows 7 对权限特别严格(更好),如果您不是管理员,则无法在某些路径上写入。希望这在某种程度上有所帮助
  • 您是否按照教程中的第 6 步进行 - 将设计器创建的 FolderWatcher 挂接到上面显示的事件处理程序?

标签: c# .net visual-studio-2010 c#-4.0


【解决方案1】:

本教程可能让您在设计模式界面中为您的服务添加FileSystemWatcher。在设计模式下,选择该对象并在其事件处理程序中,选择您的类的适当方法。

【讨论】:

    【解决方案2】:

    确保将观察程序实例“FolderWatcher”的事件注册到代码中的事件处理程序,您可以在服务设计器或服务的构造函数中执行此操作,例如:

    public Watcher()
    {
        InitializeComponent();
    
        FolderWatcher.Created += FolderWatcher_Created;//when created FolderWatcher_Created will be called
        FolderWatcher.Deleted += FolderWatcher_Deleted;//when deleted call FolderWatcher_Deleted will be called
        FolderWatcher.Renamed += FolderWatcher_Renamed;//when renamed FolderWatcher_Renamed will be called
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多