 <p>Possible the Handle is not created, you can test this with IsHandleCreated. See <a href="http://stackoverflow.com/questions/1364116/avoiding-the-woes-of-invoke-begininvoke-in-cross-thread-winform-event-handling">this question</a> for numerous issues on IvokeReqired usage. You can see the my own answer was far from simple to acually make it work reliably. </p> <p>I would recommend first not threading the UI. If you must use the .Net reflector to see what those API calls are really doing.</p> <p>Update:</p> <p>@karthik, your sample isn't complete enough for me to be able to fix it. I can't tell when or on what thread the form might have been created. I can tell you that if you just call this from any-old-thead it won't work, it needs a message pump. There are thee ways to get a message pump on a thread:</p> <ol> <li>Call Application.Run</li> <li>Call Form.ShowModalDialog</li> <li>Call Application.DoEvents in a loop</li> </ol>