Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

10 de dezembro de 2015

Validar processo em excecução com C#


Nesta dica vou mostrar uma forma de verificar se já existe um processo do seu aplicativo em execução na máquina com C#.
Para isso devemos utilizar a classe de diagnosticos nativa.
using System.Diagnostics;

Primeiro iremos saber qual é o processo do seu aplicativo
var seuProcesso = Process.GetCurrentProcess();

Depois iremos procurar se existe um outro processo com o mesmo nome que ele na lista de processos do windows
var processoIgualExecutando = Process.GetProcessesByName(seuProcesso.ProcessName).FirstOrDefault(p => p.Id != seuProcesso.Id);

Pronto com esse var já é possível saber se existe um processo aberto igual ao que você está abrindo.

Com isso pode-se por exemplo impedir que seja aberto um novo processo, evitando dois iguais sendo executados.
if (processoIgualExecutando != null)
{ seuProcesso.Kill(); }
Ler

1 de dezembro de 2015

Select em lista C#


Na dica de hoje irei mostrar como selecionar um valor em uma lista através de select, sim select parecido com os de sql.
Imagine que teremos uma lista de clientes proveniente de um select simples no banco como select * from cliente.

Os campos desta tabela são:
int id
string Nome
string Telefone
string CPF

E eu terei que ter uma classe com estes mesmos campos, o nome dela será CadCliente.

Pronto agora é só ter um IEnumerable dessa classe de clientes, e um método que selecione os valores no banco e converta em uma lista de CadCliente.
Como o foco não é o método que seleciona vou dar um nome qualquer a ele.
IEnumerable<CadCliente> cadClientes = metodoQueRetornaListaDeClientes();

Agora vou criar uma variável var para receber a classe do cliente que desejo selecionar.
poderia ser uma instância da classe, mas vou aproveitar para mostrar como inicializar uma variável var com valor nulo. (Bônus duas dicas em uma!!)
var clienteSelecionado = (IEnumerable<CadCliente>)null;

clienteSelecionado = from CadCliente cli in cadClientes
  where cli.Nome == "Mateus" select cli;

Neste comando posso utilizar dos métodos em C# mesmo para refinar minha busca como por exemplo:

clienteSelecionado = from CadCliente cli in cadClientes
  where cli.Nome.Contains("Mateus") select cli;
Ler