Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_pi.docx
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
180.17 Кб
Скачать
  1. Создание потоков

Прежде всего, для работы с потоками необходимо подключить про-странство имен System.Threading.

Для того чтобы создавать в приложении новые потоки, необходимо задать метод, который будет являться точкой входа в поток. Этот метод должен быть типа void и без параметров. В нашем случае именно в этом методе (который здесь назван MoveCircle()) и будет осуществляться движение круга.

В этом методе сначала создается контекст графического устройства и две кисти: одна (красного цвета) для круга, вторая (цвета формы) – для стирания предыдущего изображения круга.

Чтобы два круга в разных потоках не сливались друг с другом, для них указываются разные координаты x. Значения координаты устанавливаются в зависимости от имени потока (свойство Name).

После этого в цикле, пока не достигнут нижний край формы, рисуется очередной круг, поток на некоторое время приостанавливается (иначе дви-жение будет происходить настолько быстро, что увидеть его просто не получится), а затем круг стирается.

После окончания цикла для корректности выводится сообщение о за-вершении текущего потока. Листинг метода приведен ниже:

private void MoveCircle()

{

//создаем контекст устройства

Graphics g = this.CreateGraphics();

//создаем красную кисть - для круга

Brush b1 = Brushes.Red;

//и кисть цвета формы - для стирания круга

Brush b2 = SystemBrushes.Control;

int x;

//координата x круга будет зависеть от имени потока

if (Thread.CurrentThread.Name == "First")

x = Width / 2 - 30;

else

x = Width / 2 + 30;

//цикл от верхнего до нижнего края формы

for (int y = 10; y < Height - 40; y++)

{

//рисуем круг

g.FillEllipse(b1, x - 10, y - 10, 20, 20);

//"усыпляем" поток на 30 миллисекунд

Thread.Sleep(30);

//стираем круг

g.FillEllipse(b2, x - 10, y - 10, 20, 20);

}

//проверяем корректность завершения потока

MessageBox.Show("Поток " + Thread.CurrentThread.Name + " завершен!");

}

Непосредственное создание потоков можно выполнять в обработчике события Load главной формы. При этом для каждого потока нужно создать объект класса Thread, указав при этом имя метода, который будет точкой входа в поток. Далее следует присвоить потоку имя и запустить его с помощью метода Start(). Код обработчика приведен ниже:

private void Form1_Load(object sender, EventArgs e)

{

//создаем первый поток

//(точка входа в него - метод MoveCircle())

Thread thread1 = new Thread(new ThreadStart(MoveCircle));

//присваиваем потоку имя

thread1.Name = "First";

//аналогично для второго потока

Thread thread2 = new Thread(new ThreadStart(MoveCircle));

thread2.Name = "Second";

//запускаем оба потока

thread1.Start();

thread2.Start();

}

  1. Элемент управления webBrowser

Элемент управления WebBrowser позволяет разместить в приложениях Windows Forms веб-страницы и другие документы с поддержкой веб-обозревателя. Например, элемент управления WebBrowser можно использовать для обеспечения интеграции справочной HTML-системы или возможностей веб-обзора в приложении. Кроме того, элемент управления WebBrowser можно использовать для добавления существующих веб-элементов управления в клиентские приложения Windows Forms. Элемент управления WebBrowser позволяет приложению в Интернете, просмотр документов и загрузки данных. Пользователи приложений, использующих этот элемент управления можно просмотреть на веб-сайты, папки на локальном компьютере и папки на сетевом диске.

Простейшим способом встроить этот элемент управления с помощью Visual Studio.NET является добавление элемента управления в панель инструментов. Для этого щелкните правой кнопкой мыши на Toolbox в VisualStudio.NET и выберите Customize Toolbox из контекстного меню, что вызывает диалоговое окно, приведенное ниже. Необходимо выбрать вкладку COM Component и щелкнуть на Microsoft Web Browser.

Элемент управления WebBrowser появится теперь в панели инструментов, можно щелкнуть та нем, чтобы поместить его на форму в приложении Windows на C#, так же, как любой другой элемент управления Windows Forms в .NET. Visual Studio.NET автоматически создает весь код взаимодействия COM, необходимый программе C# для работы в качестве клиента с этим элементом управления, чтобы можно было интерпретировать его как просто элемент управления .NET. Это будет продемонстрировано с помощью другого очень короткого примера

DisplayWebPage

, в котором выводится страница Web с жестко закодированным URI.

DisplayWebPage

создается как стандартное приложение Windows C#, элемент управления ActiveX

WebBrowser

помещается в форму, как описано выше. По умолчанию Visual Studio.NET именует соответствующую переменную

axWebBrowser1

, и здесь будет оставлено имя по умолчанию. Затем в конструктор

Form1

добавляется код:

public Form1()

 // Требуется для поддержки Windows Form Designer.

 InitializeComponent();

 int zero = 0;

 object oZero = zero;

 string emptyString = "";

 object oEmptyString = emptyString;

 axWebBrowser1.Navigate("http://www.wrox.com",

  ref oZero, ref oEmptyString,

  ref oEmptyString, ref oEmptyString);

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]