Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# WinForm
Hi,
I Am using workder thread in my application. I want that when my application raise any exception it should be populated in the listbox and flow of exectution shouldn't be breaked out. But it showing this exception.

Cross-thread operation not valid: Control 'txtBxException' accessed from a thread other than the thread it was created on.
 
Plz guide
Posted 18-Jul-12 5:07am
Comments
Wes Aday at 18-Jul-12 11:17am
   
Use Invoke or use a delegate to access the control

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

This is common error when one starts with WinForms programming.
You need to do something like this:
if (txtBxException.InvokeRequired)
        txtBxException.Invoke(new MethodInvoker(
            delegate
            {
                txtBxException.Text = "Describe error here";
            }
            ));
    else
    {
        txtBxException.Text = "Describe error here";
    }
The problem there is limitation in WinForms that controls can be updated only from main (GUI) thread, on which they were originally created.
So, when you're working on background thread you need to deffer updating control to main thread using .Invoke() or .BeginInvoke() methods.
  Permalink  
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 395
1 George Jonsson 349
2 CPallini 335
3 BillWoodruff 314
4 OriginalGriff 227
0 OriginalGriff 5,030
1 CPallini 4,225
2 Sergey Alexandrovich Kryukov 3,604
3 George Jonsson 2,831
4 Gihan Liyanage 2,386


Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 18 Jul 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100