patrick

patrick

  • NA
  • 397
  • 0

Constantly update a control in the background

Jan 29 2012 2:29 PM
Sorry for reposting, I wanted to reword this and put everythin in one spot and didnt know how to change the old one and show my edits.

Here is what i want to do.  Lets say I have a form with label and 2 listboxes.  I want to run

setTime(){
while(true){ label.text = datetime.now.tostring();}
}

setBox1(){
while(true){
items = getitems();
listbox1.items.clear();
for(int i=0;i<items.count;i++){
listbox1.items.add(items1[i]);}
}

setBox2(items2){
while(true){
items = getitems2();
listbox2.items.clear();
for(int  i=0;i<items2.count;i++){
listbox2.items.add(items2[i]);}
}

I want to run these constantly without the rest of the program waiting, so i can always display relevant information to my user.

I saw the post http://www.c-sharpcorner.com/uploadfile/835123/cross-thread-operations-in-C-Sharp/  that allows me to update a control using a new thread, but it still makes the program wait for the thread to complete.  Why is that?  Can't i constantly update a control without interrupting the rest of the program?

I tried background worker a few different ways, but always got either the error that it was busy, or it else it would say i could not access the listbox from a thread other than the one it was created on.  There has to be a way to do this, right?

I thought maybe it had something to do with invoke and delegates, but i dont really understand what delegates are or how to use them properly.  I have only coded in a single threaded environment and ive hit a wall with it.

Answers (8)