refactor: 项目稳定性优化

This commit is contained in:
2026-01-17 17:00:15 +08:00
parent 7abd445039
commit c276e9e2b9
7 changed files with 135 additions and 110 deletions

View File

@@ -7,9 +7,9 @@ namespace TimerApp
{
public partial class MainForm : Form
{
private ActivityMonitor _monitor;
private ActivityMonitor _monitor = null!;
private AppSettings _settings;
private RestForm _restForm;
private RestForm? _restForm;
// Colors
private Color _darkBg = Color.FromArgb(30, 30, 30);
@@ -106,8 +106,8 @@ namespace TimerApp
// Manual input validation
txtWork.KeyPress += ValidateDigitInput;
txtRest.KeyPress += ValidateDigitInput;
txtWork.Leave += (s, ev) => ValidateRange((TextBox)s, 1, 120);
txtRest.Leave += (s, ev) => ValidateRange((TextBox)s, 1, 30);
txtWork.Leave += (s, ev) => ValidateRange((TextBox)s!, 1, 120);
txtRest.Leave += (s, ev) => ValidateRange((TextBox)s!, 1, 30);
// Focus handling (remove custom caret)
txtWork.KeyDown += TextBox_KeyDown;
@@ -163,7 +163,7 @@ namespace TimerApp
}
}
private void ValidateDigitInput(object sender, KeyPressEventArgs e)
private void ValidateDigitInput(object? sender, KeyPressEventArgs e)
{
// Allow control keys (backspace, etc.) and digits
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
@@ -216,7 +216,7 @@ namespace TimerApp
// CustomCaret removed to use system caret with centered text
private void TextBox_KeyDown(object sender, KeyEventArgs e)
private void TextBox_KeyDown(object? sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
@@ -407,11 +407,11 @@ namespace TimerApp
_monitor.IdleThreshold = TimeSpan.FromSeconds(_settings.IdleThresholdSeconds);
}
private void Monitor_StateChanged(object sender, EventArgs e)
private void Monitor_StateChanged(object? sender, EventArgs e)
{
if (InvokeRequired)
{
Invoke(new Action<object, EventArgs>(Monitor_StateChanged), sender, e);
Invoke(new Action<object?, EventArgs>(Monitor_StateChanged), sender, e);
return;
}
UpdateStatusUI();
@@ -456,11 +456,11 @@ namespace TimerApp
}
}
private void Monitor_WorkProgressChanged(object sender, TimeSpan remaining)
private void Monitor_WorkProgressChanged(object? sender, TimeSpan remaining)
{
if (InvokeRequired)
{
Invoke(new Action<object, TimeSpan>(Monitor_WorkProgressChanged), sender, remaining);
Invoke(new Action<object?, TimeSpan>(Monitor_WorkProgressChanged), sender, remaining);
return;
}
lblTimeLeft.Text = $"{remaining.Minutes:D2}:{remaining.Seconds:D2}";
@@ -476,11 +476,11 @@ namespace TimerApp
}
}
private void Monitor_RestStarted(object sender, EventArgs e)
private void Monitor_RestStarted(object? sender, EventArgs e)
{
if (InvokeRequired)
{
Invoke(new Action<object, EventArgs>(Monitor_RestStarted), sender, e);
Invoke(new Action<object?, EventArgs>(Monitor_RestStarted), sender, e);
return;
}
@@ -494,13 +494,13 @@ namespace TimerApp
_restForm.Show();
}
private void RestForm_SkipRequested(object sender, EventArgs e)
private void RestForm_SkipRequested(object? sender, EventArgs e)
{
_monitor.Stop();
_monitor.Start();
}
private void Monitor_RestProgressChanged(object sender, TimeSpan remaining)
private void Monitor_RestProgressChanged(object? sender, TimeSpan remaining)
{
if (_restForm != null && !_restForm.IsDisposed && _restForm.Visible)
{
@@ -508,11 +508,11 @@ namespace TimerApp
}
}
private void Monitor_RestEnded(object sender, EventArgs e)
private void Monitor_RestEnded(object? sender, EventArgs e)
{
if (InvokeRequired)
{
Invoke(new Action<object, EventArgs>(Monitor_RestEnded), sender, e);
Invoke(new Action<object?, EventArgs>(Monitor_RestEnded), sender, e);
return;
}
@@ -555,12 +555,12 @@ namespace TimerApp
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
private void notifyIcon1_MouseDoubleClick(object? sender, MouseEventArgs e)
{
ShowForm();
}
private void toolStripMenuItemShow_Click(object sender, EventArgs e)
private void toolStripMenuItemShow_Click(object? sender, EventArgs e)
{
ShowForm();
}