/// <summary> /// Manipula os garfos tirandoos do painel4(Ocupado) e passando para o painel4(Disponivel) /// </summary> /// <param name="a">filosofo o qual o garfo sera Utilizado </param> private void garfoUtilizado(Filosofo a) { var aux2 = crialControlGarfo(a); painel4.Controls.Add(aux2); painel2.Controls.RemoveByKey(aux2.Name); }
public Filosofo(int numeroFilosofo, Filosofo filosofoAnterior) { this.anterior = filosofoAnterior; this.refeicoes = 0; this.garfo = new Garfo(); this.nome = "filosofo " + numeroFilosofo; }
/// <summary> /// Cria um controle de um filosofo(utilizado para fazer a interface) /// </summary> /// <param name="a"></param> /// <returns> Control </returns> private Control crialControlFilosofo(Filosofo a) { var aux = new Label(); aux.Name = (Convert.ToString(a.nome)); aux.Text = (Convert.ToString(a.nome)); return(aux); }
public void preencher() { //Adicionando filosofos na lista Filosofo aux = new Filosofo(0, null); listaFilosofos.Add(aux); for (int i = 1; i < numeroFilosofos; ++i) { aux = new Filosofo(i, aux); listaFilosofos.Add(aux); } listaFilosofos[0].anterior = listaFilosofos[numeroFilosofos - 1]; }
public bool verificaDisponibilidade(Filosofo atual, Filosofo anterior) { if (atual == null || anterior == null) { return(false); } if (atual.garfo.disponivel && anterior.garfo.disponivel) { return(true); } else { return(false); } }
/// <summary> /// verifica os filosofos com recursos disponiveis e aloca os recursos /// </summary> /// <param name="atual"></param> private void fazRefeicao(Filosofo atual) { if (controle.verificaDisponibilidade(atual, atual.anterior)) { atual.refeicoes++; atual.executado = true; atual.garfo.disponivel = false; atual.anterior.garfo.disponivel = false; var aux2 = crialControlFilosofo(atual); painel3.Controls.Add(aux2); painel1.Controls.RemoveByKey(aux2.Name); garfoUtilizado(atual.anterior); garfoUtilizado(atual); } }