Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-03-2010, 18:25   #1
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
[C#]Background Worker

Sto cercando di capire come funziona il background worker in C# ma ho un po' di difficoltà che spero di capire buttando giù un po' di codice.
Prima di tutto, in termini rozzi a quanto ho capito và impostatata la proprietà DoWorl con la riga qua sotto:
Codice:
backgroundWorker_gracenote.DoWork += new DoWorkEventHandler(nome della funzione);
Ora, se io volessi impostare come funzione "legata al .DoWork" una funzione presente in un altra classe, come faccio?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 22-03-2010, 16:42   #2
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Nada?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 01:34   #3
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Se il metodo della classe è accessibile puoi richiamarlo come
backgroundWorker.DoWork += DoWorkEventHandler(QuellaClasse.QuelMetodo);

Tieni presente che dentro al quel metodo non puoi manipolare direttamente le variabili del programma principale. Per farlo dovrai usare l'apposito ReportProgress
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 07:22   #4
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Ok e se non è accessibile (perchè si trova in un altro file) per renderla tale devo scrivere
Codice:
new nomeclasse nomevariabile = news nomeclasse();
Giusto? Non ci sono altri modi?
Ma reportprogress non serve solo per sapere a che punto è "il lavoro"?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 11:10   #5
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Il parametro di DoWorkEventHandler è il nome del metodo da eseguire quando dai lo StartAsync a quel background worker.

Non riesco a immaginare come sia strutturato il tuo codice se hai un problema di questo tipo, perché potresti creare una classe che estende BackgroundWorker e risolvere tutto lì dentro, ma se proprio vuoi una soluzione al tuo singolo caso ti consiglio di importare System.ComponentModel tra gli using della classe col tuo metodo, e lì dentro creare il metodo in questo modo:

public static void TuoMetodo(object sender, DoWorkEventArgs e)
{
....
}

Così puoi usarlo in DoWorkEventHandler(NomeClasse.TuoMetodo)


ReportProgress serve principalmente per rendere noto lo stato del processo in background ma, a differenza del motodo che riceve il DoWork, il metodo che riceve il ReportProgress può interagire direttamente con le variabili visibili a tutta la classe.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 16:30   #6
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
semplicemente io ho un metodo che si trova in un altra classe che a sua volta si trova in un file diverso da quello del backuground worker
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 17:47   #7
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Appunto, puoi fare come ti ho detto.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 21:30   #8
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
La riga
Codice:
backgroundWorker_gracenote.DoWork += new DoWorkEventHandler(Gracenote.Search_by_Song_and_Artist(textBox_brano.Text, textBox_nomeartista.Text));
mi da l'errore di compilazione:
Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non statico
Il problema per caso è dato da textBox_brano.Text e textBox_nomeartista.Text?
Come risolvo??
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 21:44   #9
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Invece di scrivere:

backgroundWorker_gracenote.DoWork += new DoWorkEventHandler(Gracenote.Search_by_Song_and_Artist(textBox_brano.Text, textBox_nomeartista.Text));

Puoi scrivere:
String[] dati = new String[2] { textBox_brano.Text, textBox_nomeartista.Text };
backgroundWorker_gracenote.DoWork += new DoWorkEventHandler(Gracenote.Search_by_Song_and_Artis);
backgroundWorker_gracenote.RunWorkerAsync(dati);

Ovviamente si presuppone che Gracenote.Search_by_Song_and_Artist sia un metodo fatto per ricevere una richiesta di tipo BackgroundWorker, e dovrai rivedere i parametri perché glieli passo come un unico array.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 21:49   #10
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Mmm credo di aver capito, grazie!
Quindi dovrà essere dichiarata così:
Codice:
public static void Search_by_Song_and_Artist(object sender, DoWorkEventArgs e)
{
...
}
dove la variabile seder contiene l'array con dentro le variabili passate al metodo giusto?
e la seconda variabile, DoWorkEventArgs e a cosa serve?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 23-03-2010, 22:15   #11
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
Mmm credo di aver capito, grazie!
Quindi dovrà essere dichiarata così:
Codice:
public static void Search_by_Song_and_Artist(object sender, DoWorkEventArgs e)
{
...
}
dove la variabile seder contiene l'array con dentro le variabili passate al metodo giusto?
e la seconda variabile, DoWorkEventArgs e a cosa serve?
No, no!
Il sender è il background worker, mentre la e è il parametro.

Nel metodo puoi ricavare l'array così:

String[] dati = (String[])e.Argument;

Alla fine puoi dare un dato in uscita (che il backworker invia all'apposito metodo che grabba l'evento del work completed) impostando e.Result = risultato.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2010, 16:17   #12
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
E per far restituire dei valori al metodo DoWork? Non posso usare il return vero?
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2010, 16:25   #13
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
E per far restituire dei valori al metodo DoWork? Non posso usare il return vero?
Te l'ho scritto: devi impostare e.Result = tuo_risultato;

L'evento work completed a cui devi associare il tuo background worker riceve automaticamente questo parametro senza bisogno di return.
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 24-03-2010, 16:28   #14
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
sarebbe e.Result = qualcosa a quanto pare
Comunque grazie!
Senti invece
Codice:
backgroundWorker_gracenote.DoWork += new DoWorkEventHandler(Gracenote.Search_by_Song_and_Artist);
Da sempre errore!
Occorre un riferimento a un oggetto per la proprietà, il metodo o il campo non statico

EDIT: che noobs avevo dimenticato lo static nella dichiarazione della funzione

Ultima modifica di Mattyfog : 24-03-2010 alle 21:03.
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2010, 01:26   #15
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Quote:
Originariamente inviato da Mattyfog Guarda i messaggi
[...]
EDIT: che noobs avevo dimenticato lo static nella dichiarazione della funzione
capita eheh
flx2000 è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2010, 18:56   #16
Mattyfog
Senior Member
 
Iscritto dal: Jul 2008
Messaggi: 1426
Bom ora il background worker sembra andare peccato che ora devo lavorare con xml e non so una mazza..
Proverò meglio domani che ho tempo...

Grazie!
Mattyfog è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Audio lossless via Bluetooth: lo standar...
Sony cresce nel secondo trimestre, PlayS...
Intel Nova Lake-S, il 'freno nascosto' a...
APT29 sfrutta falle note di iOS e Androi...
NIU FQiX 500: arriva lo scooter da 115 k...
Betelgeuse, la stella compagna Siwarha n...
Addio alle cartucce Nintendo? Il princip...
ChatGPT accelera: le immagini si generan...
MacBook Pro: tutta la gamma avrà ...
Uno sviluppatore ha dovuto hackerare il ...
Apple HomeView Ultra: in arrivo un robot...
Da smart display a videocamera di sicure...
Gli smartphone sono tutti dei 'padelloni...
Nexus Mods sceglie la strada della trasp...
Il futuro dell'emulazione Switch 2: Mari...
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: 13:26.


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