Fix crash opening bulk sender window (rows null during InitializeComponent)
Real stack trace from the operator's machine pinned it down: WinForms fires DataGridView.CellValueChanged as a side effect of DataGridViewColumn.HeaderText assignments inside InitializeComponent(), i.e. before PreviewForm's constructor has had a chance to run RunScan() and populate the `rows` field. UpdateSummaryLabel() then hit rows.Count(...) on a null source. Nothing to do with Outlook/COM at all - a pure WinForms initialization-order gotcha. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f50624023a
commit
c3d9885ddb
1 file changed
+11
@@ -128,6 +128,17 @@ namespace BulkArchiveMailer.AddIn.UI
|
|||||||
|
|
||||||
private void UpdateSummaryLabel()
|
private void UpdateSummaryLabel()
|
||||||
{
|
{
|
||||||
|
if (rows == null)
|
||||||
|
{
|
||||||
|
// Can be invoked before RunScan() ever ran - most notably,
|
||||||
|
// WinForms fires DataGridView.CellValueChanged as a side
|
||||||
|
// effect of DataGridViewColumn.HeaderText assignments in
|
||||||
|
// InitializeComponent(), i.e. before the constructor (and
|
||||||
|
// therefore RunScan()) has had a chance to populate `rows`.
|
||||||
|
// Nothing to summarize yet in that case.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var ready = rows.Count(r => r.Job.Status == SendStatus.Ready);
|
var ready = rows.Count(r => r.Job.Status == SendStatus.Ready);
|
||||||
var already = rows.Count(r => r.Job.Status == SendStatus.AlreadySent);
|
var already = rows.Count(r => r.Job.Status == SendStatus.AlreadySent);
|
||||||
var errors = rows.Count(r => r.Job.Status == SendStatus.Error);
|
var errors = rows.Count(r => r.Job.Status == SendStatus.Error);
|
||||||
|
|||||||
Reference in new issue
Block a user