6

I got this error when trying to update an image. It was a cross-thread update, but I used .Invoke(), so that shouldn't be the problem, should it.

Benjol
  • 63,995
  • 54
  • 186
  • 268

2 Answers2

7

(Answering my own question, for others, and for future reference)

I think (not yet entirely sure) that this is because InvokeRequired will always return false if the control has not yet been loaded/shown. I have done a workaround which seems to work for the moment, which is to simple reference the handle of the associated control in its creator, like so:

var x = this.Handle; 

(See http://ikriv.com:8765/en/prog/info/dotnet/MysteriousHang.html - down? cached version)

(Related question: Boiler plate code replacement - is there anything bad about this code?)

Community
  • 1
  • 1
Benjol
  • 63,995
  • 54
  • 186
  • 268
3

If the handle doesn't yet exist, you can force it by subclassing the control and calling CreateHandle; however, the bigger question is: why are you doing things with a form that hasn't been loaded? Personally I'd only start such an operation after Load.

Marc Gravell
  • 1,026,079
  • 266
  • 2,566
  • 2,900
  • 1
    The form is loaded, but these are controls which are dynamically loaded into a user control which is not yet set to Visible=true, (I think). – Benjol Oct 29 '08 at 09:42