11-25-2017, 12:55 PM
Hello ryanshane91 and welcome to BP Forums!
In most programming environments, VB.NET included, there is a main user-interface thread which is the only thread that is allowed to access user interface components. In VB.NET, a BackgroundWorker works on a thread separate than the user-interface thread and thus is not allowed to access user interface components.
There are thus two ways to solve your problem:
1. Tell VB.NET to ignore this restriction and allow non user-interface threads to access the user-interface (
)
2. The `BackgroundWorker` has an event to report progress. You can then handle this report on the UI thread. You can do this by:
2a. Setting BackgroundWorker1.WorkerReportsProgress = True
2b. In `BackgroundWorker1_DoWork`, do something like `BackgroundWorker1.ReportProgress(file)`
2c. A new sub which handles the reported progress to add the file to the listbox.
I hope this helps!
In most programming environments, VB.NET included, there is a main user-interface thread which is the only thread that is allowed to access user interface components. In VB.NET, a BackgroundWorker works on a thread separate than the user-interface thread and thus is not allowed to access user interface components.
There are thus two ways to solve your problem:
1. Tell VB.NET to ignore this restriction and allow non user-interface threads to access the user-interface (
Code:
System.Windows.Forms.Form.CheckForIllegalCrossThreadCalls = false;
2. The `BackgroundWorker` has an event to report progress. You can then handle this report on the UI thread. You can do this by:
2a. Setting BackgroundWorker1.WorkerReportsProgress = True
2b. In `BackgroundWorker1_DoWork`, do something like `BackgroundWorker1.ReportProgress(file)`
2c. A new sub which handles the reported progress to add the file to the listbox.
I hope this helps!