FileSystemWatcher Onchage возвращаемое значение

У меня естьFileSystemEventHandler, что onchangeчитать данные из моего файла, теперь мне нужно вернуть эти данные, как я работаю с обработчиком. теперь мой код работает, но ничего не возвращает, поэтому у меня нет обновленных данных на моем интерфейсе.
это мой вопрос :как я могу вернутьdata?

Спасибо

public static string data = null;
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
public static string Run()
{
    try
    {
        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        //watcher.Path = System.IO.Directory.GetCurrentDirectory();
        watcher.Path = Path.Combine(HttpRuntime.AppDomainAppPath, "view");
        /* Watch for changes in LastAccess and LastWrite times, and
           the renaming of files or directories. */
        watcher.NotifyFilter = NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Filter = "info.txt";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);

        // Begin watching.
        watcher.EnableRaisingEvents = true;
    }
    catch (Exception ex)
    {
        Console.Write(ex.ToString());
    }
    return data;

}

private static void OnChanged(object source, FileSystemEventArgs e)
{
    data = FileManager.Read();
}

1 ответ

  1. FileSystemWatcher является механизмом, управляемым событиями. Вам не нужно ничего возвращать из вашего Run()метода — вам нужно сделать все, что вы хотите сделать в результате изменения в обработчике OnChanged()событий. Попробуйте взглянуть на API для FileSystemEventArgs .

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public static void Run()
    {
        try
        {
            // Create a new FileSystemWatcher and set its properties.
            FileSystemWatcher watcher = new FileSystemWatcher();
            //watcher.Path = System.IO.Directory.GetCurrentDirectory();
            watcher.Path = Path.Combine(HttpRuntime.AppDomainAppPath, "view");
            /* Watch for changes in LastAccess and LastWrite times, and
               the renaming of files or directories. */
            watcher.NotifyFilter = NotifyFilters.LastWrite
               | NotifyFilters.FileName | NotifyFilters.DirectoryName;
            watcher.Filter = "info.txt";
    
            // Add event handlers.
            watcher.Changed += new FileSystemEventHandler(OnChanged);
    
            // Begin watching.
            watcher.EnableRaisingEvents = true;
        }
        catch (Exception ex)
        {
            Console.Write(ex.ToString());
        }
    }
    
    
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        string fileText = File.ReadAllText(e.FullPath);
        // do whatever you want to do with fileText
    }