|
1 | 1 | using System;
|
| 2 | +using System.IO; |
2 | 3 | using System.Linq;
|
3 | 4 | using System.Timers;
|
4 | 5 | using Microsoft.Vbe.Interop;
|
@@ -41,37 +42,36 @@ void _settings_PropertyChanged(object sender, System.ComponentModel.PropertyChan
|
41 | 42 | {
|
42 | 43 | if (e.PropertyName == "IsEnabled")
|
43 | 44 | {
|
44 |
| - IsEnabledChanged(sender, e); |
| 45 | + _timer.Enabled = _settings.IsEnabled; |
45 | 46 | }
|
46 | 47 | if (e.PropertyName == "TimerDelay")
|
47 | 48 | {
|
48 |
| - TimerDelayChanged(sender, e); |
| 49 | + _timer.Interval = _settings.TimerDelay; |
49 | 50 | }
|
50 | 51 | }
|
51 | 52 |
|
52 |
| - void TimerDelayChanged(object sender, EventArgs e) |
53 |
| - { |
54 |
| - _timer.Interval = _settings.TimerDelay; |
55 |
| - } |
56 |
| - |
57 |
| - void IsEnabledChanged(object sender, EventArgs e) |
58 |
| - { |
59 |
| - _timer.Enabled = _settings.IsEnabled; |
60 |
| - } |
61 |
| - |
62 | 53 | private void _timer_Elapsed(object sender, ElapsedEventArgs e)
|
63 | 54 | {
|
64 | 55 | if (_vbe.VBProjects.OfType<VBProject>().Any(p => !p.Saved))
|
65 | 56 | {
|
| 57 | + try |
| 58 | + { |
| 59 | + // iterate to find if a file exists for each open project |
| 60 | + // I do hope the compiler doesn't optimize this out |
| 61 | + _vbe.VBProjects.OfType<VBProject>().Select(p => p.FileName).ToList(); |
| 62 | + } |
| 63 | + catch (DirectoryNotFoundException) |
| 64 | + { |
| 65 | + return; |
| 66 | + } |
| 67 | + |
66 | 68 | _vbe.CommandBars.FindControl(Id: 3).Execute();
|
67 | 69 | }
|
68 | 70 | }
|
69 | 71 |
|
70 | 72 | public void Dispose()
|
71 | 73 | {
|
72 |
| - _settings.IsEnabledChanged -= _settings_IsEnabledChanged; |
73 |
| - _settings.TimerDelayChanged -= _settings_TimerDelayChanged; |
74 |
| - |
| 74 | + _settings.PropertyChanged -= _settings_PropertyChanged; |
75 | 75 | _timer.Elapsed -= _timer_Elapsed;
|
76 | 76 |
|
77 | 77 | _timer.Dispose();
|
|
0 commit comments