Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






Электронные часы на c# (через потоки)



Все кто смотрел первый курс по c# (Windows Forms) немало услышали про потоки, но, все таки сам для себя захотел сделать часики. Вот решил опубликовать.

Стоит напомнить, что при запуске программы запускается главный поток, и когда мы перетягиваем контроли на форму,- они создаются в главном потоке. Так вот, для того чтоб в другом потоке манипулировать этими контролами, мы прибегаем к методу Invoke(), который имеет две перегрузки и напрямую связан с делегатом!

Итак, создаем Windows Forms приложение. Перетаскиваем на форму один элемент Label.

Вот код:

namespace Clock
{

    public partial class Form1 : Form
    {
        // делегат для манипулирования лейбом
        public delegate void DelegateForTime(Label label);

        // поле типа делегата
        DelegateForTime DelTime;

        // поток
        Thread t1;

        public Form1()
        {
            InitializeComponent();
            DelTime = new DelegateForTime(StartTime);// указываем метод делегату
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            t1 = new Thread(LabelTime); // создаем поток
            t1.IsBackground = true; // задаем фоновый режым
            t1.Priority = ThreadPriority.Lowest; // указываем свмый низкий приоритет
            t1.Start(); // стартуем
        }

        // устанавливает время
        void StartTime(Label label)
        {
                // выводим всегда две цыфры 
                // (00:00)
                string s = DateTime.Now.Hour.ToString("00");
                s += " : ";
                s += DateTime.Now.Minute.ToString("00");

                s += " : " + DateTime.Now.Second.ToString("00");
                label.Text = s;
        }


        void LabelTime()
        {
            // безконечный цыкл
            while (true)
            {                  
                Invoke(DelTime, label1);// запускаем метод с главного потока           
            }
        }
    }
}

Важный момент, это создание делегата и указание метода в главном потоке:

public Form1()
{
    InitializeComponent();
    DelTime = new DelegateForTime(StartTime);// указываем метод делегату
}

А при загрузке формы, создается новый поток, вызывается метод LabelTime() в котором с помощью метода Invoke(), связываем делегат DelTime c методом StartTime(…), и вторым параметром передаем ему сам Label. Таким образом, мы добились того, что можем манипулировать контролами, которые были созданы в главном потоке созданы.

потоки c#

Стили упущены, по сколку это лишнее. Их можно настроить просто покликав мышкой по свойствам формы в окне Properties.



Больше информации читайте по теме:

Пользовательский TextBox на C#
Windows Forms c# roll over button
Запрет на переключение активного CheckBox на c#
Иконка windows forms приложения – динамическая генерация из Bitmap на c#
Поиск вложенного контрола во внешнем - обобщенный метод c#
c# - Доступ к вложенным (внутренним) элементам (контролам)
Типизированный поиск дочерних контролов (элементов) в родительском на c#
C# - Проверка ввода в TextBox (ввод только определенных символов)
Заполнение (загрузка) ListBox из xml файла
Windows Forms окна произвольной формы
Открытие второй формы и передача данных в главную форму
Нумерация строк в DataGridView
Цветной ListBox на c#
Использование Windows Media Player в приложениях Windows Forms
Воспроизведение звуковых wav-файлов средствами c#



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Сергей    13.07.2011 21:01:27
        

Интересно. А как например сделать часы, отсчитывающие дни - часы - минуты.

95.161.252.148


        Маким    17.07.2011 18:40:55
        

отсчет от чего? У класса DateTime много свойтсв которіе помогаю в роботе

194.44.123.249


        pavel    13.08.2011 13:47:14
        

а почему здесь нужно работать именно через потоки. Я пробовал без потоков - не получилось. но не понимаю почему.

93.125.34.47


        Макс    15.08.2011 22:50:56
        

Ну ты сам побывал, не получилось без них. Программа должна работать все время, должно меняться состояние контрола, то-есть, две точки есть то нету... Должна запустится проверка. Разве что, можешь попробовать через цикл бесконечный, с возможностью его менять... Но я делал через потоки, поскольку хотел поближе ознакомить себя с этой темой!

188.191.47.249


        ДМИТРИЙ    26.10.2011 7:00:10
        

В коде все норм... а русский в коментах просто зверски хромает. Обидно(((

95.27.223.37


        Владимир    27.10.2011 14:20:12
        

Ошибок 0.Но не работает.

93.80.66.4




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок