Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: SyncLock vb.net

  1. #1

    SyncLock vb.net

    Ciao a tutti , qualcuno sa darmi una spiegazione logica perché nel seguente esempio il blocco non avviene?
    codice:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles  Button1.Click
            Dim blocca As New Object()
            SyncLock blocca
                    SyncLock blocca
                            MsgBox("ciao")
                    End SyncLock
            End SyncLock
    End Sub
    Questo è un esempio forzato, siccome facendo un programma più complesso , mi sono reso conto che il blocco non funzionava e ho cercato di riprodurlo volontariamete.
    Avete idee? come posso fare ?
    Ultima modifica di MItaly; 08-10-2013 a 17:10 Motivo: Aggiunti tag [code]

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ho capito da cosa capisci che non funziona ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Non ho capito da cosa capisci che non funziona ...
    lo capisco dal fatto che non dovrei leggere il msgebox.

    In quanto essendo dentro lo stesso tipo di synclock dovrebbe bloccarsi il programmi e non farmi vedere nulla, infatti hanno in comune lo stesso oggetto "blocca".

    Aiutami a capire te ne sarei grato

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No, il SyncLock funziona tra "diversi thread". Dato che stai usando sempre lo stesso thread, vedrai la MessageBox.

    La sincronizzazione offerta dal SyncLock ha senso quando il codice può essere eseguito da più thread.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Allora come posso fare una cosa del genere? siccome mi trovo a programmare in asp.net e piu utenti potrebbero scrivere contemporaneamente sulla stessa variabile , o eseguire stesse istruzioni contemporaneamente.
    Cosa si può fare?

  6. #6

    Moderazione

    • Le discussioni relative a ASP.NET non sono trattate qui, ma nella sezione ASP.Net;
    • il codice va specificato tra tag [CODE] ... [/CODE], altrimenti perde l'indentazione.


    Correggo io e provvedo a spostare il thread.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7

    Accesso contemporaneo a variabili

    Ho delle variabili globali shared dentro una classe.

    E ho un pulsante che alla sua premuta esegue delle istruzioni su questa variabile, come posso limitare il fatto di essere eseguiti contemporaneamente da 2 utenti diversi?

    grazie

  8. #8
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Le "variabili globali" vanno gestite con l'oggetto Application perciò queste proprieta nella classe statica devono essere solo dei wrapper:

    codice:
    public static string Nome
    {
      get
      {
         return Application["Nome"];
      }
      set
      {
        Application.Lock();
        Application["Nome"] = value;
        Application.UnLock();
      }
    }
    durante la scrittura blocchi l'oggetto per la concorrenza con i due comodi metodi implementati da ApplicationState.

  9. #9
    Quote Originariamente inviata da rsdpzed Visualizza il messaggio
    Le "variabili globali" vanno gestite con l'oggetto Application perciò queste proprieta nella classe statica devono essere solo dei wrapper:

    codice:
    public static string Nome
    {
      get
      {
         return Application["Nome"];
      }
      set
      {
        Application.Lock();
        Application["Nome"] = value;
        Application.UnLock();
      }
    }
    durante la scrittura blocchi l'oggetto per la concorrenza con i due comodi metodi implementati da Ap

    plicationState.
    Ma per bloccare una sub come devo fare ?e mettere in coda le richieste a una sub? hai qualche consiglio ? ad esempio se 2 utenti premono un tasto allo stesso istante ,mette in coda qyello un attimo dopo , gestisce il primo alka fine di tutto , gestisce il secondo

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.