Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите найти ошибку в проге на C#. 
:(
    Опции темы
007700
Дата 3.6.2012, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



ВОТ ТАКОЕ ЗАДАНИЕ:
Программа содержит два объекта, каждый из которых представлен окном и содержит свой поток. Эти объекты связаны друг с другом с помощью событий. Каждый поток меняет цвет другого окна с черного на белый через 500 мс.
ВОТ ТАКАЯ ПРОГРАММа:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Drawing;


delegate void Del();


class Window : Form
{
    public event Del ev;
    Thread t;
    bool life;
    
    public Window()
    {
        CThread k=new CThread();
        this.Text = "Window";
        this.Visible = true;
        Size = new Size(140, 130);
        this.BackColor = Color.Black;
        ev+=new Del(Hand);
        life = true;
        t = new Thread(new ThreadStart(k.Run));
        t.Start();
    }

    
    

    public void Hand()
    {

        this.Invalidate();

    }
    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        this.BackColor = Color.White;
    }
    

}
class CThread
{
    Thread t;
    bool life;
    ~CThread(){life=false;}
    public event Del ev;
    public void Start()
    {
        if (!life)
        {
            life = true;
            t = new Thread(new ThreadStart(Run));
            t.Start();
        }

    }
    public void Run()
    {
        
        while (life)
        {

            if (ev != null) this.ev();
            Thread.Sleep(1000);
        } 
    }

}

class Exchange
{
    static void Main()
    {
        Window s = new Window();
        Window f = new Window();
        CThread t1 = new CThread();
        CThread t2 = new CThread();
        t1.Start();
        t2.Start();
        Thread.Sleep(500);
        s.ev += new Del(f.Hand);
        f.ev += new Del(s.Hand);
        Application.Run(s);
    }
}
Укажите, пожалуйста, на ошибки.


PM MAIL   Вверх
erm0l0v
Дата 4.6.2012, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 11.1.2011

Репутация: 1
Всего: 1



Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Drawing;


delegate void Del();


class Window : Form
{
    public event Del ev;

    public Window()
    {
        this.Text = "Window";
        this.Visible = true;
        Size = new Size(140, 130);
        this.BackColor = Color.Black;
        var t = new Thread(ThreadMethod);
        t.Start();
    }

    public void ThreadMethod()
    {
        while (true)
        {
            if (ev != null)
                ev();
            Thread.Sleep(500);
        }
    }

    public void Hand()
    {
        if (this.BackColor == Color.Black)
            this.BackColor = Color.White;
        else
            this.BackColor = Color.Black;

    }
}

class Exchange
{
    static void Main()
    {
        Window s = new Window();
        Window f = new Window();
        s.ev += new Del(f.Hand);
        f.ev += new Del(s.Hand);
        Application.Run(s);
    }
}

PM MAIL   Вверх
007700
Дата 4.6.2012, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



Ух ты))) Она работает)) Спасибо вам большое))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.