Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2015, 12:37   #1
kekss89
Новичок
Джуниор
 
Регистрация: 26.03.2015
Сообщений: 3
По умолчанию Помогите запустить прогу

Код:
void PaintEllipse()
{
while(!fTerminate)
{
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
Pen myPen = new Pen(Color.FromArgb(iRed,iGreen,iBlu e),3);
int iX=rand.Next()%this.Size.Height;
int iY=rand.Next()%this.Size.Width ;
int iWidth=rand.Next(500);
int iHeight=rand.Next(500);
g.DrawEllipse(myPen,iX, iY,iWidth, iHeight);
Thread.Sleep(500);
}
}
void PaintRect()
{
while(!fTerminate)
{
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
Pen myPen = new Pen(Color.FromArgb(iRed,iGreen,iBlu e),3);
int iX=rand.Next()%this.Size.Height;
int iY=rand.Next()%this.Size.Width ;
int iWidth=rand.Next(500);
int iHeight=rand.Next(500);
g.DrawRectangle(myPen,iX, iY,iWidth, iHeight);
Thread.Sleep(500);
}
}
void PaintLine()
{
while(!fTerminate)
{
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
Pen myPen = new Pen(Color.FromArgb(iRed,iGreen,iBlu e),3);
int iX1=rand.Next()%this.Size.Height;
int iY1=rand.Next()%this.Size.Width ;
int iX2=rand.Next()%this.Size.Height;
int iY2=rand.Next()%this.Size.Width ;
g.DrawLine(myPen,new System .Drawing
.Point(iX1,iY1),new System .Drawing .Point(iX2,iY2));
Thread.Sleep(500);
}
}
Graphics g;
Random rand;
int i=0;
bool fTerminate;
Thread[] T;
using System.Threading;
private void Form1_Load(object sender, System.EventArgs e)
{
g = this.CreateGraphics();
rand=new Random ();
fTerminate=false;
T = new Thread[ 3 ];
}
private void Form1_Paint(object sender , System. Windows. Forms.
PaintEventArgs e)
{
fTerminate=false;
T[0] = new Thread(new ThreadStart(PaintEllipse));
T[0].Start();
T[1] = new Thread(new ThreadStart(PaintRect));
T[1].Start();
T[2] = new Thread(new ThreadStart(PaintLine));
T[2].Start();
}
private void Form1_Closing(object sender, System. ComponentModel.
CancelEventArgs e)
{
fTerminate=true;
for(int j=0;j<3;j++)
T[j].Abort ();
}
protected override void Dispose( bool disposing )
{
fTerminate=true;
for(int j=0;j<3;j++)
T[j].Join();
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Monitor.Enter( g);
try
{
g.DrawEllipse(myPen,iX, iY,iWidth, iHeight);
}
finally
{
Monitor.Exit( g );
}
Короче прога MultiSDI должна рисовать в окне формы но чет я не могу понять как ее запустить вроде все правильно написал а ошибка все ровно вылезает
Изображения
Тип файла: jpg Сниымок.jpg (35.9 Кб, 141 просмотров)
Тип файла: jpg Снимок.jpg (40.6 Кб, 142 просмотров)
Вложения
Тип файла: rar Лабораторная работа 4 Создание потоков Мониторы_decrypted.rar (420.7 Кб, 4 просмотров)

Последний раз редактировалось Stilet; 26.03.2015 в 17:37.
kekss89 вне форума Ответить с цитированием
Старый 26.03.2015, 12:38   #2
kekss89
Новичок
Джуниор
 
Регистрация: 26.03.2015
Сообщений: 3
По умолчанию

Что я тут забыл?кому не трудно протестите прогу
kekss89 вне форума Ответить с цитированием
Старый 27.03.2015, 06:44   #3
kekss89
Новичок
Джуниор
 
Регистрация: 26.03.2015
Сообщений: 3
По умолчанию

И че не кто не поможет?
kekss89 вне форума Ответить с цитированием
Старый 27.03.2015, 07:31   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
И че не кто не поможет?
Обратись, для начала, к автору кода, кусок которого ты пытаешься скомпилить.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 28.03.2015, 18:32   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,604
По умолчанию

Потоки нужно сихронизировать

Код:
//csc /out:C:\w\8.exe 8.cs

using System.Windows.Forms;
using System.Drawing;

using System;
using System.Threading;
using System.ComponentModel;

class e1  : Form
{

Graphics g;
Random rand;
int i=0;
bool fTerminate;
Thread[] T1;
Mutex mut;

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
Console.WriteLine("load");
g = this.CreateGraphics();
rand=new Random();
fTerminate=false;
mut = new Mutex();
T1 = new Thread[3];
T1[0] = new Thread(new ThreadStart(this.PaintEllipse)); 
T1[0].Start();
T1[1] = new Thread(new ThreadStart(this.PaintRect)); 
T1[1].Start();
T1[2] = new Thread(new ThreadStart(this.PaintLine)); 
T1[2].Start();
}

protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Console.WriteLine("paint"); 
}

protected override void OnClosing(CancelEventArgs e) 
{ 
base.OnClosing(e);
fTerminate=true;
for(int j=0;j<3;j++)
T1[j].Abort ();
}

void PaintEllipse()
{
mut.WaitOne();
Console.WriteLine("PaintEllipse");
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.FromArgb(iRed,iGreen,iBlue),3);
int iX=rand.Next()%this.Size.Height;
int iY=rand.Next()%this.Size.Width ;
int iWidth=rand.Next(500);
int iHeight=rand.Next(500);
g.DrawEllipse(myPen,iX, iY,iWidth, iHeight);
Thread.Sleep(10);
mut.ReleaseMutex();
}

void PaintRect()
{
mut.WaitOne();
Console.WriteLine("PaintRect");
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.FromArgb(iRed,iGreen,iBlue),3);
int iX=rand.Next()%this.Size.Height;
int iY=rand.Next()%this.Size.Width ;
int iWidth=rand.Next(500);
int iHeight=rand.Next(500);
g.DrawRectangle(myPen,iX, iY,iWidth, iHeight);
Thread.Sleep(15);
mut.ReleaseMutex();
}

void PaintLine()
{
mut.WaitOne();
Console.WriteLine("PaintLine");
int iRed=rand.Next(255);
int iGreen=rand.Next(255);
int iBlue=rand.Next(255);
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.FromArgb(iRed,iGreen,iBlue),3);
int iX1=rand.Next()%this.Size.Height;
int iY1=rand.Next()%this.Size.Width ;
int iX2=rand.Next()%this.Size.Height;
int iY2=rand.Next()%this.Size.Width ;
g.DrawLine(myPen,new System .Drawing.Point(iX1,iY1),new System.Drawing.Point(iX2,iY2));
Thread.Sleep(5);
mut.ReleaseMutex();
}



static void Main() 
{ 
Application.Run(new e1()); 
}

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запустить прогу в Delphi _ankot_ Помощь студентам 0 03.04.2011 18:08
Помогите запустить прогу на visual studio 2005 olejka.vmik Visual C++ 9 31.10.2009 00:13
Запустить прогу пользователем SYSTEM EPaul Общие вопросы Delphi 0 30.09.2009 19:13