3

このアプリケーションを実行しようとすると、「パスは合法的な形式ではありません。」と表示されます。これは警告であり、「fileSystemWatcher1.IncludeSubdirectories = true;」に何か問題があると言っています。参照をクリックしたとき。2番目のファイルウォッチャーの参照をクリックすると、まったく同じことが行われます。(2つのディレクトリを監視するための2つの参照ボタンがあります)ファイルウォッチャーに開始パスを指定しませんでしたが、開始パスを指定すると機能します。私はそれをしたくありません。私を助けてください。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
{
    private bool pause = false;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
    }


    // The lines with performed actions of a file
    private void fileSystemWatcher1_Created(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher1_Changed(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }
    private void fileSystemWatcher1_Deleted(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher2_Changed(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Changed> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher2_Created(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Created> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher2_Deleted(object sender, System.IO.FileSystemEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Deleted> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    private void fileSystemWatcher2_Renamed(object sender, System.IO.RenamedEventArgs e)
    {
        if (!pause)
        {
            listBox1.Items.Add("File Renamed> " + e.FullPath + " -Date:" + DateTime.Now);
        }
    }

    //1st directory
    private void button2_Click(object sender, EventArgs e)
    {
        fileSystemWatcher1.IncludeSubdirectories = true;
        DialogResult resDialog = dlgOpenDir.ShowDialog();
        if (resDialog.ToString() == "OK")
        {
            fileSystemWatcher1.Path = dlgOpenDir.SelectedPath;
            textBox1.Text = dlgOpenDir.SelectedPath;
        }
    }
    //2nd directory
    private void button3_Click(object sender, EventArgs e)
    {
        fileSystemWatcher2.IncludeSubdirectories = true;
        DialogResult resDialog = dlgOpenDir.ShowDialog();
        if (resDialog.ToString() == "OK")
        {
            fileSystemWatcher2.Path = dlgOpenDir.SelectedPath;
            textBox2.Text = dlgOpenDir.SelectedPath;
        }
    }
    //log
    private void button1_Click(object sender, EventArgs e)
    {

        DialogResult resDialog = dlgSaveFile.ShowDialog();
        if (resDialog.ToString() == "OK")
        {
            FileInfo fi = new FileInfo(dlgSaveFile.FileName);
            StreamWriter sw = fi.CreateText();
            foreach (string sItem in listBox1.Items)
            {
                sw.WriteLine(sItem);
            }
            sw.Close();
        }
    }
    //pause watching
    private void pause_button_Click(object sender, EventArgs e)
    {
        if (!pause)
        {
            pause = true;
            pause_button.Text = "Unpause";
        }
        else
        {
            pause = false;
            pause_button.Text = "Pause Watching";
        }
    }
    //clear listbox
    private void clear_button_Click(object sender, EventArgs e)
    {
        listBox1.Items.Clear(); 
    }
}

}

4

2 に答える 2

1

パスに無効な文字が含まれている可能性があります。FileInfo コンストラクターに関する MSDN ドキュメントを参照してください。

try ブロックでパスを渡す場所にコードを配置し、このように catch ブロックで例外をキャッチします

try
{
    // Your code goes here
}
catch(Exception ex)
{
   // If exception raise compiler comes here.. 
}

詳しくはTry catch Blocksをお読みください

 private void button2_Click(object sender, EventArgs e)
{
    try
    {
       fileSystemWatcher1.IncludeSubdirectories = true;
       DialogResult resDialog = dlgOpenDir.ShowDialog();
       if (resDialog.ToString() == "OK")
       {
           fileSystemWatcher1.Path = dlgOpenDir.SelectedPath;
           textBox1.Text = dlgOpenDir.SelectedPath;
       }
    }
    catch(Exception ex)
    {

    }
}
于 2013-06-10T07:41:05.517 に答える