Hej, om BeginInvoke anropas igen så kommer metoden anropas igen även fast den första fortfarande körs Antar att det finns en del risker inblandat i detta... Finns det några guidelines för hur man bör göra? Det beror helt och hållet på scenariot. Om du inte vill vara för petig så retunerar BeginInvoke ett objekt som implementerar interfacet IAsyncResult. Ta vara på resultatet och spara det. Resultatet innehåller nämligen en egenskap som du kan kan använda för att kolla om metoden har exekverat färdigt med eller inte.fråga om myDelegate.BeginInvoke()
om man kör myDelegate.BeginInvoke(func) kommer func köras i en ny tråd. Antag att func() tar en stund på sig att exekvera och att myDelegate.BeginInvoke(func) hinner köras igen under denna tid. Vad händer då? Måste man sätta lås på koden i func eller hanterar .net detta åt mig?
Vidare - om jag sätter lås i func() kommer anropskoden vänta eller är det i den nya tråden som väntan sker?
Tack på förhand!
/peterSv: fråga om myDelegate.BeginInvoke()
Sv:fråga om myDelegate.BeginInvoke()
/peterSv: fråga om myDelegate.BeginInvoke()
Det viktiga är att man analyserar sin access till all data man använder (och nej data ligger inte bara i en databas), om man har mycket skrivningar till data som är delad så bör man försöka synkronisera accessen på ett eller annat sätt.
Där finns flera olika att använda i .net på olika nivåer. ReadWriterLock, Mutex, Synkroniserade Metoder / Klasser, Sv: fråga om myDelegate.BeginInvoke()