Fixes a crash with preferences, as well as fixes a bug where a
non-existing item can be added to the list even though it exists in the users preferences. Moved a script function retrieval into a try/catch block. Fixed a file list bug, needed to make a copy and clear; also if a crash happened the list would never be cleared, and a script could get stuck on one file. Scripts should have their own try/catch around each individual file if they want to continue processing files without interruption.
This commit is contained in:
parent
09124edc2b
commit
a6c6f34080
|
@ -562,18 +562,18 @@ namespace FileWatcher
|
||||||
m_TickCounter.Enabled = false;
|
m_TickCounter.Enabled = false;
|
||||||
|
|
||||||
|
|
||||||
Form1.Instance.notifyIcon1.ShowBalloonTip(1000, "Script Running", "Running '" + ScriptPath + "'", ToolTipIcon.Info);
|
//Form1.Instance.notifyIcon1.ShowBalloonTip(500, "Script Running", "Running '" + ScriptPath + "'", ToolTipIcon.Info);
|
||||||
|
|
||||||
//scriptWorker.RunWorkerAsync(m_UpdatedFiles);
|
//scriptWorker.RunWorkerAsync(m_UpdatedFiles);
|
||||||
|
|
||||||
// run script in separate thread
|
|
||||||
Func<List<string>, bool> updated = pyScope.GetVariable<Func<List<string>, bool>>("process_updated_files");
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var updateFiles = m_UpdatedFiles;
|
var updateFiles = m_UpdatedFiles.ToList();
|
||||||
m_UpdatedFiles.Clear();
|
m_UpdatedFiles.Clear();
|
||||||
|
|
||||||
|
// run script in separate thread
|
||||||
|
Func<List<string>, bool> updated = pyScope.GetVariable<Func<List<string>, bool>>("process_updated_files");
|
||||||
|
|
||||||
updated(updateFiles);
|
updated(updateFiles);
|
||||||
|
|
||||||
Logger.Log("Just finished running '" + ScriptPath + "'");
|
Logger.Log("Just finished running '" + ScriptPath + "'");
|
||||||
|
@ -602,6 +602,11 @@ namespace FileWatcher
|
||||||
{
|
{
|
||||||
Logger.Log("Directory not found exception in '" + ScriptPath + "':" + ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + ex.TargetSite);
|
Logger.Log("Directory not found exception in '" + ScriptPath + "':" + ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + ex.TargetSite);
|
||||||
}
|
}
|
||||||
|
else if (ex is System.IO.IOException)
|
||||||
|
{
|
||||||
|
Logger.Log("IOException in '" + ScriptPath + "':" + ex.Message + Environment.NewLine + ex.StackTrace + Environment.NewLine + ex.TargetSite);
|
||||||
|
Logger.Log("Your script had an IO exception, you should alter your script to catch individual file errors so you can try to process them all even when an exception happens. You may also want to alter your file IO in case you can get around this error.");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Logger.Log("Error running '" + ScriptPath + "':" + ex.Message + Environment.NewLine + ex.StackTrace);
|
Logger.Log("Error running '" + ScriptPath + "':" + ex.Message + Environment.NewLine + ex.StackTrace);
|
||||||
|
|
|
@ -43,7 +43,10 @@ namespace FileWatcher
|
||||||
private void createButton_Click(object sender, EventArgs e)
|
private void createButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(textBox3.Text));
|
Directory.CreateDirectory(Path.GetDirectoryName(textBox3.Text));
|
||||||
using (var fileStream = File.Open(textBox3.Text, FileMode.OpenOrCreate, FileAccess.ReadWrite));
|
using (var fileStream = File.Open(textBox3.Text, FileMode.OpenOrCreate, FileAccess.ReadWrite))
|
||||||
|
{
|
||||||
|
// don't do anything, just create the file.
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
|
private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
|
||||||
|
|
|
@ -137,6 +137,8 @@ namespace FileWatcher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defaultPrograms.RemoveAll(str => !programs.ContainsKey(str) || !File.Exists(programs[str].Path));
|
||||||
|
|
||||||
UnboundBindingList = new BindingList<string>(defaultPrograms);
|
UnboundBindingList = new BindingList<string>(defaultPrograms);
|
||||||
foreach (string str in programs.Keys)
|
foreach (string str in programs.Keys)
|
||||||
{
|
{
|
||||||
|
@ -209,11 +211,15 @@ namespace FileWatcher
|
||||||
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
|
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (listBox1.SelectedValue != null)
|
if (listBox1.SelectedValue != null)
|
||||||
|
{
|
||||||
|
string selectedValue = (string)listBox1.SelectedValue;
|
||||||
|
if (programs.ContainsKey(selectedValue))
|
||||||
{
|
{
|
||||||
string path = programs[(string)listBox1.SelectedValue].Path;
|
string path = programs[(string)listBox1.SelectedValue].Path;
|
||||||
textBox1.Text = path;
|
textBox1.Text = path;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Preferences_FormClosing(object sender, FormClosingEventArgs e)
|
private void Preferences_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,14 +26,14 @@ namespace FileWatcher
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Start()
|
public new void Start()
|
||||||
{
|
{
|
||||||
m_Running = true;
|
m_Running = true;
|
||||||
m_Start = DateTime.Now;
|
m_Start = DateTime.Now;
|
||||||
base.Start();
|
base.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Stop()
|
public new void Stop()
|
||||||
{
|
{
|
||||||
m_End = DateTime.Now;
|
m_End = DateTime.Now;
|
||||||
m_Running = false;
|
m_Running = false;
|
||||||
|
|
Loading…
Reference in New Issue