inner wrote:
// oDCRR is the COM object that is created in main thread and in this second thread // does something very long in the ExecuteEx
Okay, so this comment explains the real problem. The main thread is also the UI thread so if you execute a COM process that takes a while to complete, you're litterally blocking the UI thread. I can't guarantee this will work but you need to take the COM operation of the UI/main thread. I would try something like this as this is similar to what I did on my KanaFlash program: //in the class declaration private Thread MyCOMThread = null; private void OnBtnExecute(object sender, DoWorkEventArgs e) { // oDCRR is the COM object that is created in main thread and in this second thread // does something very long in the ExecuteEx MyCOMThread = Thread(new ThreadStart(PerformCOMOperation)); MyCOMThread.Start(); } private void PerformCOMOperation() { e.Result = oDCRR.ExecuteEx(); MyCOMThread.Abort(); ProcessResults(whatever you need here...); } //create a MyCOMThread complete event results processor here private void ProcessResults(some param) { //process results } Hope this helps! Mike Poz