Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-01-2021, 10:32   #1
qwerty_race
Member
 
Iscritto dal: Jun 2020
Messaggi: 50
[C#] Incrementare una ProgressBar da un altro Thread

Buongiorno,
ho fatto un programmino in "Win Form" con Visual Studio 2019.

Questo programmino posta sui gruppi Facebook tramite "Selenium + Chrome Driver", quindi apre un Browser e simula tutti i passaggi umani.

Ho fatto il "Form1" quindi l'interfaccia utente dove si realizza il post e si seleziona i gruppi dove postare,
attraverso un nuovo Thread avvio una nuova istanza di "Chrome Driver", quindi mi si apre il browser e inizia tutte le procedure, login, post, etc...

Tra i vari controlli ho una ProgressBar alla quale non riesco ad applicare l'avanzamento dall'altro Thread,
ho letto la guida ufficiale MSN ma la struttura del mio programma non è come nell'esempio e non riesco ad interpretarla per me.

la mia struttura è cosi:

Form1:
Interfaccia Utente, dove c'è la ProgressBar.

Codice:
       private Browser oBrowser = new Browser();


        public Form1()
        {
            InitializeComponent();
        }


        private void BtnLogin_Click(object sender, EventArgs e)
        {
                th = new Thread(new ThreadStart(Login))
                {
                    ApartmentState = ApartmentState.STA
                };
                th.Start();
        }


        private void Login()
        {
            //Apro il Browser
            oBrowser.OpenBrowser(wbHidden);

            //Faccio Login su Facebook
            if (oBrowser.Login(txtUser.Text, txtPass.Text))
            {
                //Controllo se sono loggato
                if (!oBrowser.CheckLogin())
                {
                    MessageBox.Show("Username o Password sbagliati", "Attenzione!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {
                    //Login effettuato
                }
            }
        }
La mia Classe Browser dove devo incrementare la mia ProgressBar
Codice:
    class Browser : File
    {
        public bool Login(string _username, string _password)
        {
            //codice .....

            myProgBar.PerformStep();

            //codice .....

            myProgBar.PerformStep();

            //codice .....

            myProgBar.PerformStep();
        }
    }
Potreste darmi una mano per vedere se riesco?

Vi ringrazio molto.
qwerty_race è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2021, 22:52   #2
antonio338
Senior Member
 
L'Avatar di antonio338
 
Iscritto dal: Aug 2003
Messaggi: 1174
Devi chiamare Invoke dal controllo che è ospitato nel thread della UI.
Questo dalla documentazione ufficiale: https://docs.microsoft.com/it-it/dot...e?view=net-5.0

Da dove arriva Invoke? E' presente nella classe Control che tutti i controlli di Winforms implementano.
Prendendo il tuo codice quindi diventerebbe:
Codice:
myProgBar.Invoke(delegato)
dove delegato è un metodo che non ha argomenti e restituisce void.
Possiamo usare un delegato anonimo, facendo il cast su MethodInvoker che è un delegato che corrisponde al nostro caso.
Codice:
myProgBar.Invoke((MethodInvoker) delegate {myProgBar.PerformStep(); })
Se hai molti metodi che devono essere eseguiti però diventa più mantenibile esporre dei metodi pubblici dal form che ospita i controlli, ipotizzando che myProgBar sia in Form1 potresti aggiungere:
Codice:
public void DoProgress()
{
if (InvokeRequired)
{
Invoke((MethodInvoker)delegate{ myProgBar.PerformStep();});
}
else
{
myProgBar.PerformStep();
}
}
Cosi facendo però devi ripetere questo codice per ogni controllo che necessità di Invoke.
Come risolvere? Usando un metodo di estensione, la cui documentazione è cui:
https://docs.microsoft.com/it-it/dot...ension-methods
Il tuo metodo di estensione sarà molto simile all'esempio precedente:
Codice:
static public void SafeExecute(this Control control, Action codice)
{
if (control.InvokeRequired)
{
control.Invoke(codice);
}
else
{
codice();
}
}
Quindi in fin dei conti potrai eseguire solo:
Codice:
myProgBar.SafeExecute(() => myProgBar.PerformStep());
Ricorda che per vedere i metodi di estensione dall'Intellisense devi esplicitamente importare lo spazio dei nomi dove è contenuto
__________________
VENDITORI ONESTI: krieger, Corrente Elettrica, Cina.Z, Poliacido, Fedemike82, Lucas01, rikop, SystemR89
VENDITORI DA EVITARE: Ancora nessuno

Ultima modifica di antonio338 : 25-01-2021 alle 22:55.
antonio338 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Xiaomi 17 Ultra: l'autonomia non sarà un...
Il processo produttivo a 2 nm di TSMC è ...
L'atteso aggiornamento dei driver della ...
The Elder Scrolls VI nel 2029 e Fallout ...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
Dreame abbassa i prezzi su Amazon: robot...
ECOVACS Deebot torna protagonista su Ama...
Il primo iPhone pieghevole potrebbe esse...
Apple 'apre' iOS alle terze parti anche ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v