As an even more extreme case of people
seeing something, confirming that they see it,
but not actually reading it
is someone who sees something,
types it into an email message,
yet still doesn't read it.
Subject: "Invoke or BeginInvoke cannot be called
on a control until the window handle has been created."
exception crashes our program
I'm looking for guidance on why this exception is thrown and
how I can avoid it.
Here's a sketch of what we're doing:
void DoStuff() { try { // attempt operation X, which throws an exception when it fails } catch { this.BeginInvoke(new ShowErrorDelegate(this.OnShowError), null); } }
If operation X fails, thecatchclause runs,
but it throws the exception
"Invoke or BeginInvoke cannot be called on a control
until the window handle has been created."
Why is it happening?
It's crashing our program.
Right now, we're working around it by wrapping
theBeginInvokeinside its own
try/catch,
but we'd like to understand why the exception is occurring in the
first place and how we can avoid it.
Now, I don't know much about WinForms,
so I could be way off base here, but perhaps the problem is that
you're calling
BeginInvoke on a control before its window handle
has been created.
I'm just basing that on the text that you typed
into the subject line and again into the message text.
The workaround therefore is to make sure the window handle has
been created before calling BeginInvoke.
(You can imagine any number of ways of ensuring this.)
Though I do admire the approach of
"We don't know what's going on, so we'll just wrap it inside
an exception handler and pretend it didn't happen."
Comments
Post new comment