/// <summary> /// Puede levantar AbortarEsperarMorirException debido al protocolo Esperar-Morir /// </summary> /// <param name="transaccion">Transaccion que solicita el bloqueo</param> /// <param name="condiciones">Condiciones por la que bloquear</param> /// <param name="tipoBloqueo">Tipo de bloqueo que solicita</param> /// <returns></returns> internal DescriptorBloqueo bloquear(Transaccion transaccion, Condicion condicion, TipoBloqueo tipoBloqueo) { lock (Entradas) { foreach (EntradaBloqueo entrada in Entradas) { if (entrada.igualCondicion(condicion)) { if (entrada.permiteBloqueo(condicion, tipoBloqueo)) { return(entrada.bloquear(transaccion, tipoBloqueo)); } entrada.encolarBloqueo(transaccion); //-> aqui puede leventar exception por protocolo esperar morir while ((entrada.Bloqueado && !entrada.permiteBloqueo(condicion, tipoBloqueo)) || !entrada.desencolarSiEsElSiguiente(transaccion)) { Monitor.Wait(entradas); } if (tipoBloqueo == TipoBloqueo.BLOQUEO_LECTURA) { Monitor.PulseAll(entradas);//porque no eran los primeros, se volvieron a bloquear } return(entrada.bloquear(transaccion, tipoBloqueo)); } } //no estaba la entrada EntradaBloqueo nuevaEntrada = new EntradaBloqueo(this, tipoBloqueo, condicion); Entradas.Add(nuevaEntrada); return(nuevaEntrada.bloquear(transaccion, tipoBloqueo)); } }
async Task ExecuteLoadEntradasCommand() { if (IsBusy) { return; } IsBusy = true; try { Entradas.Clear(); var items = await EntradaDataStore.GetEntradasAsync(true); foreach (var item in items) { Entradas.Add(item); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
private void LerEntradas() { for (int linha = 0; linha < Linhas; linha++) { Entradas.Add(LerLinha()); } }
public void AdicionaEntrada(Lancamentos.Lancamento lancamento) { var entrada = new Lancamento(lancamento.Data, lancamento.Descricao, lancamento.Valor); Entradas.Add(entrada); Total = Total + entrada.Valor; }
public void AddEntrada(entrada _entrada) { using (var api = new BusinessContext()) { try { api.AddEntrada(_entrada); } catch (Exception ex) { return; } Entradas.Add(_entrada); } }
public void agregarEntrada(Entrada entrada) { Entradas.Add(entrada); SaveChanges(); }