Jump to content
Fórum Script Brasil

pjava

Membros
  • Posts

    52
  • Joined

  • Last visited

Everything posted by pjava

  1. Tenho esse programa. Preciso colocar o método execute em uma Thread, task ou Delegate, ou seja, esse método rodará em um serviço e será startado automaticamente em um servidor e terei muitas execuções oncorrentes, logo isso deveria ser feito em um desses caras acima. Abaixo todo meu código até agora. PesquisaAgenda pag = new PesquisaAgenda(); public Form1() { InitializeComponent(); } Lista<Entity.Rotina> listaRotina = new Lista<Entity.Rotina>(); Lista<Entity.Tarefa> listaTarefa = new Lista<Entity.Tarefa>(); Lista<Entity.ExportacaoAgendamento> listaAgendamento = new Lista<Entity.ExportacaoAgendamento>(); Lista<Entity.ExportacaoAgendamento> listaTudo = new Lista<Entity.ExportacaoAgendamento>(); List<Int64> tarefa; Int64 _execTarefa; DateTime _diaHoraExcecucao = DateTime.Now; t.Timer timer = new t.Timer(); private static int CompararTarefas(Entity.Tarefa tarefaDe, Entity.Tarefa tarefaPara) { return tarefaDe.OrdemExecucao.CompareTo(tarefaPara.OrdemExecucao); } private void BuscaTarefa() { if (listaTudo.Count == 0) { listaTudo = Sistema.Infrastructure.Repository.ExportacaoAgendamento.RetornarTodos(); } listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarTodos(); dgvAgenda.DataSource = listaTudo.ToArray(); dgvRotina.DataSource = listaRotina.ToArray(); foreach (var item in listaRotina) { if (item.DataInicial < DateTime.Now) { listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarPorFiltro(new Finder.Rotina() { IdRotina = item.IdRotina }); foreach (var item_rotina in listaRotina) { execute(item_rotina.IdRotina); } } } } private void execute(Int64 _rotina) { var lista = Sistema.Infrastructure.Repository.Tarefa.RetornarPorFiltro(new Finder.Tarefa() { IdRotina = _rotina }).ToList(); lista.Sort(CompararTarefas); foreach (var item in lista) { string path = ""; path = item.Descricao; System.Diagnostics.Process.Start(path); } } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { BuscaTarefa(); }
  2. pjava

    Dúvidas com listas

    Tenho uma lista de objetos. Para não ficar um serviço de minuto em minuto buscando no BD as informações e preenchendo a lista, resolvi no start do windows service, preencher essa lista. Então tenho a seguinte relação. Lista de Agendamentos ==>> Qua agenda rotinas a serem executadas. Uma Rotina pode ter N agendamentos. Lista de Rotinas ==>> Que executa tarefas. Uma rotina pode ter N tarefas a serem executadas. O que eu preciso é, através do agendamento, buscar a rotina agendada para aquela Data/Hora(dateTime). Achando a rotina para aquela datahora, buscar a tarefa específica e chamar o meu método execute() para executar a tarefa. As tarefas são: Executar Aplicativo, já com o path gravado na Entidade, Executar DTSX ou enviar um email. Minha grande dificuldade é exatamente montar essa lógica, pois todas as listas estão preenchida no OnStar do serviço. Abaixo minha classe. Ela não está feita, exatamente pela minha dúvida de como implementar isso. Não busco código, mas sim o caminho de como fazer. public partial class ServicoAgendamento : ServiceBase { Lista<Entity.Rotina> listaRotina = new Lista<Entity.Rotina>(); Lista<Entity.Tarefa> listaTarefa = new Lista<Entity.Tarefa>(); Lista<Entity.ExportacaoAgendamento> listaAgendamento = new Lista<Entity.ExportacaoAgendamento>(); Lista<Entity.ExportacaoAgendamento> listaTudo = new Lista<Entity.ExportacaoAgendamento>(); List<Int64> tarefa; Int64 _execTarefa; DateTime _diaHoraExcecucao = DateTime.Now; t.Timer timer = new t.Timer(); public ServicoAgendamento() { InitializeComponent(); } protected override void OnStart(string[] args) { Int64? _idexportacaoagendamento; Int64? _idrotina; Int64? _idcliente; Int64? _idprojeto; String _descricao; Boolean? _ativo; Boolean? _habilitado; Boolean? _unica; Boolean? _diaria; Boolean? _semanal; Boolean? _mensal; Boolean? _interrompergeral; DateTime? _dtinclui; DateTime? _dtaltera; DateTime? _dtinicio; DateTime? _dtexpira; String _porperiodo; String _interrompertarefa; String _repetir; String _atrasarate; //String _programa; Boolean _flagexecuta; EventLog.WriteEntry("Serviço Inicializado.", EventLogEntryType.Information); timer.Elapsed += new t.ElapsedEventHandler(OnElapsedTime); timer.Interval = 60000; timer.Enabled = true; if (listaTudo == null) { listaTudo = Sistema.Infrastructure.Repository.ExportacaoAgendamento.RetornarTodos(); } listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarTodos(); foreach (var item in listaRotina) { if (item.DataInicial == DateTime.Now) { listaRotina = Sistema.Infrastructure.Repository.Rotina.RetornarPorFiltro(new Finder.Rotina() { IdRotina = item.IdRotina }); foreach (var item_rotina in listaRotina) { execute(item_rotina.IdRotina); } } } } protected override void OnStop() { timer.Enabled = false; EventLog.WriteEntry("Serviço Parado.", EventLogEntryType.Information); } private void OnElapsedTime(object source, t.ElapsedEventArgs e) { EventLog.WriteEntry("Executando serviço: " + DateTime.Now.ToShortTimeString(), EventLogEntryType.Information); } private void execute(Int64 _rotina) { listaTarefa = Sistema.Infrastructure.Repository.Tarefa.RetornarPorFiltro(new Finder.Tarefa() { IdRotina = _rotina }); foreach (var item in listaTarefa) { } } } }
  3. Para chamar, a calculadora do windows, por exemplo, só preciso disso? protected override void OnStart(string[] args) { System.Diagnostics.Process.Start("calc"); } Se for somente isso, não está funcionando. O que mais preciso informar?
  4. pjava

    Ajuda com Threads

    Somente para explicar melhor. Tenho tres tabelas: 1) Agendamento 2) Rotinas 3) Tarefas No agendamento eu agendo as rotinas, que podem ser, Excutar um aplicativo, Executar um DTSX. Na tabela tarefa, então eu executo a tarefa, tipo, executar um Aplicativo. nessa tabela tenho o path e o nome do aplicativo. Pego isso, coloco no meu serviço e executo. que eu não estou conseguindo fazer, é montar todo esse processo. Agendamento >> recebe chave de rotina >> que recebe chave de tarefa, esses são meus relacionamentos no BD. Isso precisa ser executado através de um Windows Service. Ouvi falar de TPL(Tasks paralel library) do FrameWork 4.0, dentro do namespace Threading, mas não sei como usar, ainda que parece ser o ideal para o que eu quero.
  5. pjava

    Ajuda com Threads

    Tenho um serviço que ele vai executar programas externos e dtsx. Acontece, que várias pessoas estarão executando esses programas. Então preciso criar Thread(s) para que o serviço execute cada processo(tarefa) agendada previamente em uma entidade de BD para cada usuário. Eu peço ajuda em como iniciar, como proceder. Avduvida não está em criar Threads, mas em como fazer isso. Lógica é a dúvida.
  6. pjava

    Windows Service com C#

    A minha dúvida é simples, mas para mim não está sendo. O que eu não estou conseguindo é como pegar uma lista retornada pelo método, pelo serviço, pois como não tenho uma interface, não sei como fazer. Abaixo meu método e como pegar no OnStart, por exemplo, a lista do método PesquisaTodosAgendamento(). public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected override void OnStop() { } private Lista<Entity.ExportacaoAgendamento> PesquisaTodosAgendamento() { Lista<Entity.ExportacaoAgendamento> listaAgendamento = new Lista<Entity.ExportacaoAgendamento>(); listaAgendamento = Sistema.Infrastructure.Repository.ExportacaoAgendamento.RetornarTodos(); return listaAgendamento; } }
  7. pjava

    Windows Service com C#

    Criar Windows Service com C#. preciso fazer e gostaria de uma ajuda. Estou pesquisando na net, mas qualquer ajuda de quem já fez é legal.
  8. pjava

    Checkbox com campos bit

    ckTipo.Checked = Convert.ToBoolean(meu_campo_no_Grid);
  9. pjava

    Checkbox com campos bit

    Num campo bit, ele recebe 0 ou 1. Eu tenho uma pesquisa que me traz esses campos. Gostaria de saber como eu faço para atribuir a um checkbox os valores vindos do BD, ou seja, se for 0 ele não checa o checkbox, mas se for 1 ele já checa o chckbox. Como eu faço isso?
  10. Vou dar o exemplo. As propriedades do objeto finder devem ser preenchida pelos parametros do método. Essa é minha dúvida: Como fazer. private List<Entity.Skin> PesquisaFiltroSkin(Meus_Parâmetros_Aqui) { List<Entity.Skin> listaSkin = new List<Entity.Skin>(); Finder.Skin finder = new Finder.Skin(); finder.IdSkin = ?; finder.IdProjeto = ?; finder.Descricao = ?; finder.DataInclusao = ?; finder.DataAlteracao = ?; listaSkin = Infrastructure.Repository.Skin.RetornarPorFiltro(finder); return listaSkin; }
  11. pjava

    Dúvida de SqlDataReader

    Resolvi assim: private List<Entity.Skin> PesquisaIdSkin(Int32 _idskin) { List<Entity.Skin> listaSkin = new List<Entity.Skin>(); Finder.Skin finder = new Finder.Skin(); finder.IdSkin = _idskin; listaSkin = Infrastructure.Repository.Skin.RetornarPorID(finder); return listaSkin; } E a chamada do método, assim: dgvPesquisa.DataSource = PesquisaTodosSkin(); Obrigado e pode encerrar este post.
  12. Preciso criar um método que me retorne uma lista e insira os valores em DataGridView. Bem isso eu já fiz e está funcionando. No meu sistema existe 3 tipos de pesquisa. 1) Geral 2) Por Id 3) Por Filtro A terceira(Por filtro) é que está me tirando os cabelos(dos q restam). Assim: O objeto retornado, tem algumas propriedades e na pesquisa elas podem estar null, ou seja, digamos que eu tenha 5 propriedade que são 5 atributos de minha tabela do BD. A dúvida é eu criar um método que eu passe 1 ou 2 ou 3 ou 4 ou 5 ou quaisquer conbinações dessas 5 prop. Se eu faço um méto assim: private.... meu_metodo(tipo1 param1,tipo2 param2,tipo3 param3,tipo 4 param4,tipo5 param5) {} E na pesquisa eu só preciso passar param3 e param 5, por exemplo, esse método estoura. Então, como eu faço isso? Não sei se me fiz entender.
  13. pjava

    Dúvida de SqlDataReader

    Minha dúvida está exatamente aí. Nessa implementação. Fiz isso, mas está errado com certeza. private List<Domain.Entity.Skin> PesquisaSkin(int _idskin) { Domain.Finder.Skin skin = new Domain.Finder.Skin(); skin.IdSkin = _idskin; return GrupoLTM.Sistema.Infrastructure.Repository.Skin.RetornarPorID(skin); } private void btnGeraTarefa_Click(object sender, EventArgs e) { List<Domain.Entity.Skin> skb = new List<Domain.Entity.Skin>(); skb = PesquisaSkin(1); }
  14. pjava

    Dúvida de SqlDataReader

    Seria isso e retorna _tela. Agora, como eu pego do outro lado e jogo num gridview? Jogar no gridview, não é a questã, mas sim, como pegar esse retorno. .... while (_SqlDataReader.Read()) { Domain.Entity.tela _tela = new Domain.Entity.tela (); _tela .Idtela = Convert.ToInt64(_SqlDataReader["Idtela "]); _tela .Descricao = Convert.ToString(_SqlDataReader["Descricao"]); _tela .IdProjeto = Convert.ToInt64(_SqlDataReader["IdProjeto"]); _tela .DataInclusao = _SqlDataReader["Data1"].ToString().ToNullable<DateTime>(); _tela .DataAlteracao = _SqlDataReader["Data2"].ToString().ToNullable<DateTime>(); _Listtela .Add(_tela );
  15. Seria isso e retorna _tela. Agora, como eu pego do outro lado e jogo num gridview? Jogar no gridview, não é a questã, mas sim, como pegar esse retorno. .... while (_SqlDataReader.Read()) { Domain.Entity.tela _tela = new Domain.Entity.tela (); _tela .Idtela = Convert.ToInt64(_SqlDataReader["Idtela "]); _tela .Descricao = Convert.ToString(_SqlDataReader["Descricao"]); _tela .IdProjeto = Convert.ToInt64(_SqlDataReader["IdProjeto"]); _tela .DataInclusao = _SqlDataReader["Data1"].ToString().ToNullable<DateTime>(); _tela .DataAlteracao = _SqlDataReader["Data2"].ToString().ToNullable<DateTime>(); _Listtela .Add(_tela );
  16. Existe aqui no projeto um método que me retorna um sqldatareader e uma lista de objetos. Preciso saber pegar esses caras e mstrar num GridView. Pessoal, estou perdidão nisso. Como eu faço isso? Preciso de uma luz, um start apenas.
  17. pjava

    Setar form principal

    O cara fez uma aplicação e ela tem um form. Acontece que eu coloco um button, ou textbox e não aparece no form. Coloquei um nome no caption do form e também não aparece. Aí então, resolvi criar um outro form como o padrão, mas eu não sei como colocá-lo como o form principal. Como eu faço isso?
  18. Como eu faço para pegar o último caracter de uma string? Dessa forma ele pega a string sem o último s = var.Substring(0,var.Length-1);
  19. Consegui. using (FolderBrowserDialog fbd = new FolderBrowserDialog()) if (fbd.ShowDialog() == DialogResult.OK) { edtDestino.Text = fbd.SelectedPath; }
  20. Só para exemplificar melhor. Quando estamos instalando um programa, ele sugere uma pasta default ou então, aquele famoso botão Browser, onde você escolhe a pasta. É exatamente isso que eu quero. Só que com OpenFileDialog eu abro o arquivo e não pasta, tanto que se não houver arquivo nele, a opção de escolha fica desabilitada.
  21. pjava

    Path com / e não com \

    Minha solução foi essa, mas não achei elegante se o componente tiver recurso. Senão fica assim mesmo. string n_path = path.Replace("\\", "/");
  22. pjava

    Path com / e não com \

    Tem como abrir o OpenFileDialog e trazer um path + nome_arquivo assim: C:/CLS/Itau/Planilha.csv e não assim C:\CLS\Itau\Planilha.csv Como eu faço? Como eu configuro o OpenFileDialog? Ou qual outro componente então?
  23. Foram geradas 28 SP através de um aplicativo. Agora preciso importar elas para dentro do meu BD. Como eu faço? Existe algum tipo de DTS para isso?
  24. Se uso isso, eu preciso de um arquivo pelo menos para trazer apenas o diretorio string diretorio = System.IO.Path.GetDirectoryName(@"C:\Diretorio\meu_arquivo.extensão"); O que eu quero é apenas o diretorio, onde não existe nenhum arquivo, uma pasta nova. Como eu faço?
  25. Na aplicação que eu estou desenvolvendo, existe uma tabela que guarda os endereços dos skins utilizados. Então o usuário entra na aplicação, escolhe o tema e executa em sua aplicação. Não ficou muito definido para mim ainda, mas essa aplicação será desenvolvida em: Back(Windows Form), Front(Web) e alguns serviços(WCF) para fazer a ponte entre o Front e o Back. Então, já estou me adiantando se essa mudança será nos dois ladaos ou somente no lado Cliente(Front), ou seja, mudar o skin.
×
×
  • Create New...