Cu Visual Basic, puteți scrie aplicații care realizează mai multe sarcini simultan. Problemele care pot întârzia potențial executarea altor sarcini sunt efectuate în fluxuri separate; Acest mod de organizare a cererii se numește fluxuri de creare gratuite sau multithreading.
Aplicațiile care utilizează multithreading, răspunde mai rapid la acțiunile utilizatorului, ca interfața cu utilizatorul rămâne activ, în timp ce sarcinile care necesită lucrări de mari consumatoare de procesor efectuate în alte fire. Multithreading este, de asemenea, eficientă în crearea unei aplicații scalabile, deoarece utilizatorul poate adăuga fluxuri prin creșterea volumului de muncă.
Cel mai sigur mod de a crea o aplicație multithreaded este de a utiliza componenta BackgroundWorker. Această clasă gestionează fluxuri separate de metoda de tratament a spus. A se vedea, de exemplu. Walkthrough. Multithreading.
Pentru a începe operațiunea în fundal, trebuie să creați un BackgroundWorker și a urmări evenimente, raportarea cu privire la progresul operației și semnalizarea finalizarea acestuia. BackgroundWorker obiect poate crea software-ul, sau trageți-l în forma elementelor componente Urechea panoului. Când creați un BackgroundWorker în Forms Designer. apare în componenta. și proprietățile sale sunt afișate în fereastra de proprietăți.
Pentru a configura operațiunea în fundal, trebuie să adăugați un handler de evenimente pentru evenimente DoWork. Apelați operația care ia o lungă perioadă de timp în acest eveniment handler.
Pentru a începe operațiunea, apelați RunWorkerAsync. Pentru a fi informat de progres, este necesar să se ocupe de un eveniment ProgressChanged. Dacă doriți să primiți o notificare după finalizarea operațiunii, evenimentul prelucrat RunWorkerCompleted.
Metodele care se ocupa de evenimente ProgressChanged RunWorkerCompleted și să aibă acces la interfața de utilizare a aplicației, deoarece aceste evenimente sunt cauzate de fluxul care a cauzat metoda RunWorkerAsync. Cu toate acestea, DoWork de tratare a evenimentului nu se poate lucra cu obiecte ale interfeței cu utilizatorul, deoarece ruleaza pe un fir de fundal.
Dacă doriți mai mult control asupra comportamentului fluxurilor de aplicații, puteți gestiona fluxul propriu. Cu toate acestea, trebuie să se țină cont de faptul că scrierea de cereri de multithreaded corecte poate fi o sarcina descurajatoare. Cererea poate înceta să răspundă sau pot apărea erori temporare cauzate de conflict. Pentru mai multe informații, consultați. În secțiunea fir-Safe Components.
Fiecare fir are o proprietate prioritate, care determină cât de mult timp CPU ar trebui să ia în performanță. Sistemul de operare alocă mai mult de perioade lungi de timp în fluxul de prioritate ridicată și mai scurtă în firul de prioritate redusă. fire noi sunt create cu valoarea normală. dar aveți posibilitatea să modificați proprietatea Prioritate la orice listare valoare ThreadPriority.
Descrierea diferitelor fluxuri prioritățile cm. ThreadPriority în secțiunea.
Firul principal se execută la nesfârșit, în timp ce fluxul de fundal este oprit imediat după oprirea ultimului flux principal. Pentru a defini sau modifica starea fluxului de fond poate fi folosit proprietatea IsBackground.