Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

[C#] Таймер+процессы = wtf!?!

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 02.11.2011, 13:06   #1
 Разведчик
Аватар для Неkто_Я
 
Неkто_Я никому не известный тип
Регистрация: 02.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Exclamation [C#] Таймер+процессы = wtf!?!

Доброго времени суток! Проблема в том, что таймер не останавливается.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
using System.Threading;

namespace WindowsFormsApplication1
{

    public partial class Form1 : Form
    {
        bool proc = false;

        public Form1()
        {
            InitializeComponent();

        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            System.Diagnostics.Process[] processes;
            processes = Process.GetProcessesByName("launcher");
            foreach (System.Diagnostics.Process instance in processes)
            {
                if (!proc)
                {
                    listBox1.Items.Add(instance.ProcessName);
                    if (instance.ProcessName == "launcher")
                    {
                        Process.Start(@"D:\1.exe");
                        proc = true;
                        timer1.Stop();
                        timer1.Enabled = false;
                    }
                    timer1.Stop();
                }
            }
            if (proc == true)
            {
                timer1.Stop();

            }
        }
    }
}
Я так поняла, что это из-за того, что timer.stop написано в foreach, но если писать не в foreach, то тогда тормозится будет, не запуская процесса...Как нужно переделать код, чтобы работало?что исправить?
Заранее спасибо
  Ответить с цитированием
Старый 02.11.2011, 13:49   #2
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

Не могу понять код...
Цитата:
Сообщение от Неkто_ЯПосмотреть сообщение
if (instance.ProcessName == "launcher")

К чему это? Имя процесса очевидно, после:
Цитата:
Сообщение от Неkто_ЯПосмотреть сообщение
processes = Process.GetProcessesByName("launcher");

Цитата:
Сообщение от Неkто_ЯПосмотреть сообщение
timer1.Enabled = false;

После timer1.Stop() уже не выполнится.

Цитата:
Сообщение от Неkто_ЯПосмотреть сообщение
if (proc == true) { timer1.Stop(); }

Если искомый процесс действительно существует, до этого кода опять-таки не дойдет. просто проверь не является-ли список процессов пустым) И для чего добавлять в листБокс имя процесса, если им однозначно является "launcher"?
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 02.11.2011, 13:58   #3
 Разведчик
Аватар для Неkто_Я
 
Неkто_Я никому не известный тип
Регистрация: 02.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

Цитата:
Сообщение от •theSaboteur•Посмотреть сообщение
Не могу понять код...
И для чего добавлять в листБокс имя процесса, если им однозначно является "launcher"?

Как это тогда реализовать?

Добавлено через 2 минуты
И тамер не останавливается не после стоп,ни после энэблда, вот, программа запускается много-много раз, лаунчер - имя процесса,да.

Последний раз редактировалось Неkто_Я; 02.11.2011 в 14:01. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 02.11.2011, 14:11   #4
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

Точно не скажу - надо студию врубать.
Во-первых таймер.Энэйбл лучше изначально установить в фолс, запускать его ф-ей Start() в конструкторе окна, как вариант,
Код:
Process[] processes = Process.GetProcessessByName("launcher");
if(processess.Length>0){
Process.Start(@"D:\1.exe");
timer1.Stop();
}
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой
  Ответить с цитированием
Старый 02.11.2011, 14:18   #5
 Разведчик
Аватар для Неkто_Я
 
Неkто_Я никому не известный тип
Регистрация: 02.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

Оно ошибки выдает:
Ошибка 1 "System.Diagnostics.Process" не содержит определение для "GetProcessessByName" D:\готовая_2_часть_проги\WindowsFormsApplication5\ WindowsFormsApplication5\Form1.cs 44 43 WindowsFormsApplication5
Ошибка 2 Элемент "processess" не существует в текущем контексте. D:\готовая_2_часть_проги\WindowsFormsApplication5\ WindowsFormsApplication5\Form1.cs 45 17 WindowsFormsApplication5
  Ответить с цитированием
Старый 02.11.2011, 14:20   #6
 Разведчик
Аватар для •theSaboteur•
 
•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен•theSaboteur• скоро будет известен
Регистрация: 14.07.2011
Сообщений: 27
Популярность: 244
Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
Отправить сообщение для •theSaboteur• с помощью ICQ
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

В начало добавь нэймспейс
Код:
using System.Diagnostics;
Что касается второй ошибки - у меня в коде опечатка, одну 's' лишнюю написал в имени переменной

___________________

Код:
new Thread(delegate()
{
while(true)
{
Process[] processes = Process.GetProcessesByName("launcher");
if(processes.Length>0)
{
Process.Start(@"D:\1.exe");
break;
}
}
}).Start();
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой

Последний раз редактировалось •theSaboteur•; 02.11.2011 в 16:45.
  Ответить с цитированием
Старый 02.11.2011, 14:22   #7
 Разведчик
Аватар для Неkто_Я
 
Неkто_Я никому не известный тип
Регистрация: 02.11.2011
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

using System.Diagnostics;
уже есть и было...все равно пишет ошибку(1)

Добавлено через 2 минуты
нашла!просто Getprocesses - тож 1 s, но все равно запускается бесконечное кол-во раз...

Последний раз редактировалось Неkто_Я; 02.11.2011 в 14:24. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 02.11.2011, 17:06   #8
 Пехотинец
Аватар для AJIACTOP
 
AJIACTOP скоро будет известенAJIACTOP скоро будет известенAJIACTOP скоро будет известенAJIACTOP скоро будет известен
Регистрация: 08.07.2009
Сообщений: 63
Популярность: 359
Сказал(а) спасибо: 32
Поблагодарили 84 раз(а) в 28 сообщениях
 
По умолчанию Re: [C#] Таймер+процессы = wtf!?!

Останавливайте таймер потом Process.Start()

Код:
 public partial class Form1 : Form
    {
        bool proc = false;

        public Form1()
        {
            InitializeComponent();
            timer1.Interval = 1000;
            timer1.Tick+=new EventHandler(timer1_Tick);
            timer1.Enabled = true;
        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            System.Diagnostics.Process[] processes;
            processes = Process.GetProcessesByName("opera");
            foreach (System.Diagnostics.Process instance in processes)
            {
                listBox1.Items.Add(instance.ProcessName);
                timer1.Enabled = false;
                Process.Start(@"D:\dmaster.exe");

            }
        }
    }

Последний раз редактировалось AJIACTOP; 02.11.2011 в 17:15.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать одним кликом не нужные процессы wagan Треп 7 09.06.2009 17:20

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:00.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net