Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 30.07.2014
Сообщений: 19
1

Thread

05.01.2015, 14:39. Показов 1384. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть два класса rockets и Form1:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
  public partial class Form1 : Form
    {
        private Rockets rockets;
        private Graphics g;
        public Form1()
        {
            InitializeComponent();
            g = panel1.CreateGraphics();
            rockets = new Rockets();
            rockets.panel = panel1;
            rockets.g = g;
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
          [B][I]Thread thread = new Thread(rockets.mainn);
            thread.Start();
            //rockets.mainn();[/I][/B]
        }
    }
 
class Rockets
    {
        private Rectangle rectangle;
        private Timer timer;
        public Graphics g;
        public  Panel panel { get; set; }
 
        public void mainn()
        {
            rectangle = new Rectangle(200, 200, 10, 10);
            timer = new Timer();
            timer.Interval = 50;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }
 
 
        void timer_Tick(object sender, EventArgs e)
        {
            Draw(g);
            Move();
            Thread.Sleep(50);
            panel.Invalidate();
        }
        void Move()
        {
            rectangle.Y--;
        }
 
        void Draw(Graphics g)
        {
            g.FillRectangle(new SolidBrush(Color.FromArgb(255, 255, 0, 0)), rectangle);
        }
    }
Если запускать функцию 'mainn' через поток, то не работает, а если просто запустить - работает. Не могу понять почему, помогите, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2015, 14:39
Ответы с готовыми решениями:

Метод Thread.Suspend(),Thread.Resume()
Здравствуйте,пытаюсь сделать игру простенькую в Windows Form. И хочу,чтобы в ней было включено...

Потоки Thread
По факту мне нужно по нажатии кнопки что бы выполнялся таймер но в отдельном потоке,собственно вот...

Thread проблемы
Все привет. При работе программы да и вообще в Debug'e возникает исключение если ставить 2 +...

exception в thread
есть некий код: public static void DownloadRSS(string URL, string fileName, ref Label...

1
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
05.01.2015, 14:45 2
kotenokGav, ты используешь System.Windows.Forms.Timer который может работать только в контексте UI потока. Используй класс System.Threading.Timer. Кроме того тебе понадобиться обернуть все обращения к элементам формы в Control.Invoke(). Подробности смотри в FAQ. Ответ №3.2.
1
05.01.2015, 14:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.01.2015, 14:45
Помогаю со студенческими работами здесь

Работа с Thread
Здравсвуйте! Нужна сросно помощь. Имеется несколько интерфейсов лежащих в разный библиотеках....

ProgressBar и Thread.Sleep
Задание: 1 . Создание Windows приложения, которое демонстрирует асинхронную работу в фоновом...

Конвертация, инициализация Thread
Дoбрый дeнь! Пoмoгитe пoжaлуйcтa инициaлизирoвaть знaчeниями _Thread ecли мoжнo кaк тo. У мeня в...

Не работает Thread.Sleep();
Не работает задержка. Вернее она работает, но сначала программа делает задержку, а затем отображает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru