» » » Герберт Шилдт - C# 4.0: полное руководство


Авторские права

Герберт Шилдт - C# 4.0: полное руководство

Здесь можно скачать бесплатно "Герберт Шилдт - C# 4.0: полное руководство" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство ООО "И.Д. Вильямс", год 2011. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герберт Шилдт - C# 4.0: полное руководство
Рейтинг:
Название:
C# 4.0: полное руководство
Издательство:
ООО "И.Д. Вильямс"
Год:
2011
ISBN:
978-5-8459-1684-6
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# 4.0: полное руководство"

Описание и краткое содержание "C# 4.0: полное руководство" читать бесплатно онлайн.



В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию






class DemoTask {

  static void MyTask() {

    Console.WriteLine("MyTask() запущен");

    for(int count = 0; count < 10; count++) {

      Thread.Sleep(500);

      Console.WriteLine("В методе MyTask(), подсчет равен " + count);

    }

    Console.WriteLine("MyTask завершен");

  }


  static void Main() {

    Console.WriteLine("Основной поток запущен.");

    // Сконструировать объект задачи.

    Task tsk = new Task(MyTask);


    // Запустить задачу на исполнение,

    tsk.Start();


    // метод Main() активным до завершения метода MyTask().

    for(int i = 0; i < 60; i++) {

      Console.Write(".");

      Thread.Sleep(100);

    }

    Console.WriteLine("Основной поток завершен.");

  }

}


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


Основной поток запущен.

.MyTask() запущен

....В методе MyTask(), подсчет равен 0

.....В методе MyTask(), подсчет равен 1

.....В методе MyTask(), подсчет равен 2

....В методе MyTask(), подсчет равен 3

.....В методе MyTask(), подсчет равен 4

.....В методе MyTask(), подсчет равен 5

....В методе MyTask(), подсчет равен 6

.....В методе MyTask(), подсчет равен 7

.....В методе MyTask(), подсчет равен 8

.....В методе MyTask(), подсчет равен 9

MyTask завершен

............Основной поток завершен.


Следует иметь в виду, что по умолчанию задача исполняется в фоновом потоке. Следовательно, при завершении создающего потока завершается и сама задача. Именно поэтому в рассматриваемой здесь программе метод Thread.Sleep() использован для сохранения активным основного потока до тех пор, пока не завершится выполнение метода MyTask(). Как и следовало ожидать, организовать ожидание завершения задачи можно и более совершенными способами, что и будет показано далее.

В приведенном выше примере программы задача, предназначавшаяся для параллельного исполнения, обозначалась в виде статического метода. Но такое требование к задаче не является обязательным. Например, в приведенной ниже программе, которая является переработанным вариантом предыдущей, метод MyTask(), выполняющий роль задачи, инкапсулирован внутри класса.


// Использовать метод экземпляра в качестве задачи.

using System;

using System.Threading;

using System.Threading.Tasks;


class MyClass {

  // Метод выполняемый в качестве задачи,

  public void MyTask() {

    Console.WriteLine("MyTask() запущен");

    for(int count = 0; count < 10; count++) {

      Thread.Sleep(500);

      Console.WriteLine("В методе MyTask(), подсчет равен " + count);

    }

    Console.WriteLine("MyTask завершен ");

  }

}


class DemoTask {

  static void Main() {

    Console.WriteLine("Основной поток запущен.");

    // Сконструировать объект типа MyClass.

    MyClass me = new MyClass();


    // Сконструировать объект задачи для метода mc.MyTask().

    Task tsk = new Task(me.MyTask);


    // Запустить задачу на исполнение,

    tsk.Start();


    // Сохранить метод Main() активным до завершения метода MyTask().

    for(int i = 0; i < 60; i++) {

      Console.Write (".");

      Thread.Sleep (100);

    }

    Console.WriteLine("Основной поток завершен.");

  }

}


Результат выполнения этой программы получается таким же, как и прежде. Единственное отличие состоит в том, что метод MyTask() вызывается теперь для экземпляра объекта класса MyClass.

В отношении задач необходимо также иметь в виду следующее: после того, как задача завершена, она не может быть перезапущена. Следовательно, иного способа повторного запуска задачи на исполнение, кроме создания ее снова, не существует.


Применение идентификатора задачи

В отличие от класса Thread; в классе Task отсутствует свойство Name для хранения имени задачи. Но вместо этого в нем имеется свойство Id для хранения идентификатора задачи, по которому можно распознавать задачи. Свойство Id доступно только для чтения и относится к типу int. Оно объявляется следующим образом.


public int Id { get; }


Каждая задача получает идентификатор, когда она создается. Значения идентификаторов уникальны, но не упорядочены. Поэтому один идентификатор задачи может появиться перед другим, хотя он может и не иметь меньшее значение.

Идентификатор исполняемой в настоящий момент задачи можно выявить с помощью свойства CurrentId. Это свойство доступно только для чтения, относится к типу static и объявляется следующим образом.


public static Nullable<int> CurrentID { get; }


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

В приведенном ниже примере программы создаются две задачи и показывается, какая из них исполняется.


// Продемонстрировать применение свойств Id и CurrentId.

using System;

using System.Threading;

using System.Threading.Tasks;


class DemoTask {

  // Метод, исполняемый как задача,

  static void MyTask() {

    Console.WriteLine("MyTask() №" + Task.CurrentId + " запущен");

    for (int count = 0; count < 10; count++) {

      Thread.Sleep(500);

      Console.WriteLine("В методе MyTaskO #" + Task.CurrentId +

           ", подсчет равен " + count );

    }

    Console.WriteLine("MyTask №" + Task.CurrentId + " завершен");

  }


  static void Main() {

    Console.WriteLine("Основной поток запущен.");

    // Сконструировать объекты двух задач.

    Task tsk = new Task(MyTask);

    Task tsk2 = new Task(MyTask);


    // Запустить задачи на исполнение,

    tsk.Start();

    tsk2.Start();


    Console.WriteLine("Идентификатор задачи tsk: " + tsk.Id);

    Console.WriteLine("Идентификатор задачи tsk2: " + tsk2.Id);


    // Сохранить метод Main() активным до завершения остальных задач,

    for(int i = 0; i < 60; i++) {

      Console.Write(".");

      Thread.Sleep (100);

    }

    Console.WriteLine("Основной поток завершен.");

  }

}


Выполнение этой программы приводит к следующему результату.


Основной поток запущен.

Идентификатор задачи tsk: 1

Идентификатор задачи tsk2: 2

.MyTask() №1 запущен

MyTask() №2 запущен

....В методе MyTask() #1, подсчет равен 0

В методе MyTask() #2, подсчет равен 0

.....В методе MyTask() #1, подсчет равен 1

В методе MyTask() #2, подсчет равен 1

.....В методе MyTask() #1, подсчет равен 2

В методе MyTask() #2, подсчет равен 2

....В методе MyTask() #2, подсчет равен 3

В методе MyTask() #1, подсчет равен 3

.....В методе MyTask() #1, подсчет равен 4

В методе MyTask() #2, подсчет равен 4

.....В методе MyTask() #1, подсчет равен 5


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

Похожие книги на "C# 4.0: полное руководство"

Книги похожие на "C# 4.0: полное руководство" читать онлайн или скачать бесплатно полные версии.


Понравилась книга? Оставьте Ваш комментарий, поделитесь впечатлениями или расскажите друзьям

Все книги автора Герберт Шилдт

Герберт Шилдт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Отзывы о "Герберт Шилдт - C# 4.0: полное руководство"

Отзывы читателей о книге "C# 4.0: полное руководство", комментарии и мнения людей о произведении.

  1. BOT20.02.2021, 13:02
    сКОРО КУПЛЮ
А что Вы думаете о книге? Оставьте Ваш отзыв.